
<!doctype html>
<html lang="zh" class="no-js">
  <head>
    
      <meta charset="utf-8">
      <meta name="viewport" content="width=device-width,initial-scale=1">
      
      
      
      
      
      
      <link rel="icon" href="static/images/favicon.png">
      <meta name="generator" content="mkdocs-1.5.2, mkdocs-material-9.2.8">
    
    
      
        <title>Luna AI</title>
      
    
    
      <link rel="stylesheet" href="assets/stylesheets/main.046329b4.min.css">
      
        
        <link rel="stylesheet" href="assets/stylesheets/palette.85d0ee34.min.css">
      
      


    
    
      
    
    
      
        
        
        <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
        <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
        <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
      
    
    
    <script>__md_scope=new URL(".",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
    
      
  


  
  

<script id="__analytics">function __md_analytics(){function n(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],n("js",new Date),n("config","G-FR32RDV2MT"),document.addEventListener("DOMContentLoaded",function(){document.forms.search&&document.forms.search.query.addEventListener("blur",function(){this.value&&n("event","search",{search_term:this.value})}),document$.subscribe(function(){var a=document.forms.feedback;if(void 0!==a)for(var e of a.querySelectorAll("[type=submit]"))e.addEventListener("click",function(e){e.preventDefault();var t=document.location.pathname,e=this.getAttribute("data-md-value");n("event","feedback",{page:t,data:e}),a.firstElementChild.disabled=!0;e=a.querySelector(".md-feedback__note [data-md-value='"+e+"']");e&&(e.hidden=!1)}),a.hidden=!1}),location$.subscribe(function(e){n("config","G-FR32RDV2MT",{page_path:e.pathname})})});var e=document.createElement("script");e.async=!0,e.src="https://www.googletagmanager.com/gtag/js?id=G-FR32RDV2MT",document.getElementById("__analytics").insertAdjacentElement("afterEnd",e)}</script>
  
    <script>"undefined"!=typeof __md_analytics&&__md_analytics()</script>
  

    
    
    
  </head>
  
  
    
    
    
    
    
    <body dir="ltr" data-md-color-scheme="default" data-md-color-primary="blue" data-md-color-accent="indigo">
  
    
    
    <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
    <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
    <label class="md-overlay" for="__drawer"></label>
    <div data-md-component="skip">
      
        
        <a href="#luna-ai" class="md-skip">
          跳转至
        </a>
      
    </div>
    <div data-md-component="announce">
      
    </div>
    
    
      

  

<header class="md-header md-header--shadow" data-md-component="header">
  <nav class="md-header__inner md-grid" aria-label="页眉">
    <a href="." title="Luna AI" class="md-header__button md-logo" aria-label="Luna AI" data-md-component="logo">
      
  
  <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M160.8 96.5c14 17 31 30.9 49.5 42.2 25.9 15.8 53.7 25.9 77.7 31.6v-31.5c-22.2-30.3-38-67.3-39.4-110.8-.4-11.3-7.5-21.5-18.4-24.4-7.6-2-15.8-.2-21 5.8-13.3 15.4-32.7 44.6-48.4 87.2zM320 144v64c-60.8-5.1-185-43.8-219.3-157.2C97.4 40 87.9 32 76.6 32c-7.9 0-15.3 3.9-18.8 11C46.8 65.9 32 112.1 32 176c0 116.9 80.1 180.5 118.4 202.8L11.8 416.6C6.7 418 2.6 421.8.9 426.8s-.8 10.6 2.3 14.8C21.7 466.2 77.3 512 160 512c3.6 0 7.2-1.2 10-3.5l75.6-60.5H320c88.4 0 160-71.6 160-160V128l29.9-44.9c1.3-2 2.1-4.4 2.1-6.8 0-6.8-5.5-12.3-12.3-12.3H400c-44.2 0-80 35.8-80 80zm80-16a16 16 0 1 1 0 32 16 16 0 1 1 0-32z"/></svg>

    </a>
    <label class="md-header__button md-icon" for="__drawer">
      
      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
    </label>
    <div class="md-header__title" data-md-component="header-title">
      <div class="md-header__ellipsis">
        <div class="md-header__topic">
          <span class="md-ellipsis">
            Luna AI
          </span>
        </div>
        <div class="md-header__topic" data-md-component="header-topic">
          <span class="md-ellipsis">
            
              ✨ Luna AI ✨
            
          </span>
        </div>
      </div>
    </div>
    
      
    
    
    
      <label class="md-header__button md-icon" for="__search">
        
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
      </label>
      <div class="md-search" data-md-component="search" role="dialog">
  <label class="md-search__overlay" for="__search"></label>
  <div class="md-search__inner" role="search">
    <form class="md-search__form" name="search">
      <input type="text" class="md-search__input" name="query" aria-label="搜索" placeholder="搜索" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
      <label class="md-search__icon md-icon" for="__search">
        
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
        
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
      </label>
      <nav class="md-search__options" aria-label="查找">
        
        <button type="reset" class="md-search__icon md-icon" title="清空当前内容" aria-label="清空当前内容" tabindex="-1">
          
          <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg>
        </button>
      </nav>
      
    </form>
    <div class="md-search__output">
      <div class="md-search__scrollwrap" data-md-scrollfix>
        <div class="md-search-result" data-md-component="search-result">
          <div class="md-search-result__meta">
            正在初始化搜索引擎
          </div>
          <ol class="md-search-result__list" role="presentation"></ol>
        </div>
      </div>
    </div>
  </div>
</div>
    
    
      <div class="md-header__source">
        <a href="https://github.com/Ikaros-521/AI-Vtuber" title="前往仓库" class="md-source" data-md-component="source">
  <div class="md-source__icon md-icon">
    
    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
  </div>
  <div class="md-source__repository">
    Luna AI
  </div>
</a>
      </div>
    
  </nav>
  
</header>
    
    <div class="md-container" data-md-component="container">
      
      
        
          
        
      
      <main class="md-main" data-md-component="main">
        <div class="md-main__inner md-grid">
          
            
              
                
              
              <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" hidden>
                <div class="md-sidebar__scrollwrap">
                  <div class="md-sidebar__inner">
                    



<nav class="md-nav md-nav--primary" aria-label="导航栏" data-md-level="0">
  <label class="md-nav__title" for="__drawer">
    <a href="." title="Luna AI" class="md-nav__button md-logo" aria-label="Luna AI" data-md-component="logo">
      
  
  <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M160.8 96.5c14 17 31 30.9 49.5 42.2 25.9 15.8 53.7 25.9 77.7 31.6v-31.5c-22.2-30.3-38-67.3-39.4-110.8-.4-11.3-7.5-21.5-18.4-24.4-7.6-2-15.8-.2-21 5.8-13.3 15.4-32.7 44.6-48.4 87.2zM320 144v64c-60.8-5.1-185-43.8-219.3-157.2C97.4 40 87.9 32 76.6 32c-7.9 0-15.3 3.9-18.8 11C46.8 65.9 32 112.1 32 176c0 116.9 80.1 180.5 118.4 202.8L11.8 416.6C6.7 418 2.6 421.8.9 426.8s-.8 10.6 2.3 14.8C21.7 466.2 77.3 512 160 512c3.6 0 7.2-1.2 10-3.5l75.6-60.5H320c88.4 0 160-71.6 160-160V128l29.9-44.9c1.3-2 2.1-4.4 2.1-6.8 0-6.8-5.5-12.3-12.3-12.3H400c-44.2 0-80 35.8-80 80zm80-16a16 16 0 1 1 0 32 16 16 0 1 1 0-32z"/></svg>

    </a>
    Luna AI
  </label>
  
    <div class="md-nav__source">
      <a href="https://github.com/Ikaros-521/AI-Vtuber" title="前往仓库" class="md-source" data-md-component="source">
  <div class="md-source__icon md-icon">
    
    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
  </div>
  <div class="md-source__repository">
    Luna AI
  </div>
</a>
    </div>
  
  <ul class="md-nav__list" data-md-scrollfix>
    
      
      
  
  
    
  
  
    <li class="md-nav__item md-nav__item--active">
      
      <input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
      
      
        
      
      
        <label class="md-nav__link md-nav__link--active" for="__toc">
          
  
  <span class="md-ellipsis">
    ✨ Luna AI ✨
  </span>
  

          <span class="md-nav__icon md-icon"></span>
        </label>
      
      <a href="." class="md-nav__link md-nav__link--active">
        
  
  <span class="md-ellipsis">
    ✨ Luna AI ✨
  </span>
  

      </a>
      
        

<nav class="md-nav md-nav--secondary" aria-label="目录">
  
  
  
    
  
  
    <label class="md-nav__title" for="__toc">
      <span class="md-nav__icon md-icon"></span>
      目录
    </label>
    <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
      
        <li class="md-nav__item">
  <a href="#_1" class="md-nav__link">
     项目结构
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#_2" class="md-nav__link">
     下载项目
  </a>
  
    <nav class="md-nav" aria-label="下载项目">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#git-zip" class="md-nav__link">
    首先你得装个 git（啥，没装？百度），当然也可以直接在页面切换分支后下载各版本 ZIP 压缩包
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
      
        <li class="md-nav__item">
  <a href="#_3" class="md-nav__link">
     运行环境
  </a>
  
    <nav class="md-nav" aria-label="运行环境">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#_4" class="md-nav__link">
    操作系统
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#python-31011" class="md-nav__link">
    Python 版本 3.10.11
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
      
        <li class="md-nav__item">
  <a href="#_5" class="md-nav__link">
     配置
  </a>
  
    <nav class="md-nav" aria-label="配置">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#webui-webui" class="md-nav__link">
    WebUI 程序运行后会自动加载配置文件，可以通过 WebUI 程序进行配置修改（清空配置项可以看到配置项的说明），也可以手动修改配置运行。
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
      
        <li class="md-nav__item">
  <a href="#chatgpt" class="md-nav__link">
     ChatGPT 代理
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#chat_with_file" class="md-nav__link">
     chat_with_file 模式说明
  </a>
  
    <nav class="md-nav" aria-label="chat_with_file 模式说明">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#_6" class="md-nav__link">
    模式简介
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_7" class="md-nav__link">
    模式配置
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
      
        <li class="md-nav__item">
  <a href="#_8" class="md-nav__link">
     使用
  </a>
  
    <nav class="md-nav" aria-label="使用">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#_9" class="md-nav__link">
    各版本都需要做的前期准备操作。
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
      
        <li class="md-nav__item">
  <a href="#_10" class="md-nav__link">
    运行环境
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#_11" class="md-nav__link">
    安装依赖
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#ai" class="md-nav__link">
    如何训练自己的AI？
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#_12" class="md-nav__link">
    常见问题
  </a>
  
    <nav class="md-nav" aria-label="常见问题">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#_13" class="md-nav__link">
    哔哩哔哩版
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_14" class="md-nav__link">
    抖音版
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_15" class="md-nav__link">
    抖音版 旧版
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_16" class="md-nav__link">
    快手版
  </a>
  
    <nav class="md-nav" aria-label="快手版">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#_17" class="md-nav__link">
    新版本：
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_18" class="md-nav__link">
    旧版本：
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_19" class="md-nav__link">
    微信视频号版
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_20" class="md-nav__link">
    斗鱼版
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#youtube" class="md-nav__link">
    YouTube版
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#twitch" class="md-nav__link">
    twitch版
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_21" class="md-nav__link">
    聊天模式
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
      
        <li class="md-nav__item">
  <a href="#_22" class="md-nav__link">
     效果图
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#_23" class="md-nav__link">
     常见问题
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#api" class="md-nav__link">
    API
  </a>
  
    <nav class="md-nav" aria-label="API">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#config" class="md-nav__link">
    配置config
  </a>
  
    <nav class="md-nav" aria-label="配置config">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#_24" class="md-nav__link">
    概述
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_25" class="md-nav__link">
    请求参数
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_26" class="md-nav__link">
    响应
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_27" class="md-nav__link">
    系统命令
  </a>
  
    <nav class="md-nav" aria-label="系统命令">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#_28" class="md-nav__link">
    概述
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_29" class="md-nav__link">
    请求参数
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_30" class="md-nav__link">
    响应
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_31" class="md-nav__link">
    发送数据
  </a>
  
    <nav class="md-nav" aria-label="发送数据">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#_32" class="md-nav__link">
    概述
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_33" class="md-nav__link">
    请求参数
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_34" class="md-nav__link">
    响应
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
      </ul>
    </nav>
  
</li>
      
        <li class="md-nav__item">
  <a href="#_35" class="md-nav__link">
     应用实例
  </a>
  
    <nav class="md-nav" aria-label="应用实例">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#pk" class="md-nav__link">
    PK、连麦玩法如何配置？
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
      
        <li class="md-nav__item">
  <a href="#_36" class="md-nav__link">
     补充
  </a>
  
    <nav class="md-nav" aria-label="补充">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#_37" class="md-nav__link">
    补充板块提供了对项目接入的第三方技术或应用的详细说明。如果您需要与第三方应用进行对接，您可以查阅此板块的内容，并访问第三方官方网站以了解其使用方法。
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_38" class="md-nav__link">
    平台
  </a>
  
    <nav class="md-nav" aria-label="平台">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#b" class="md-nav__link">
    b站直播监听
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_39" class="md-nav__link">
    抖音弹幕获取
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_40" class="md-nav__link">
    快手弹幕获取
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_41" class="md-nav__link">
    微信视频号监听
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_42" class="md-nav__link">
    斗鱼直播监听
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#youtube_1" class="md-nav__link">
    YouTube直播监听
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#twitch_1" class="md-nav__link">
    twitch直播监听
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#tiktok" class="md-nav__link">
    TikTok
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_43" class="md-nav__link">
    聊天模式
  </a>
  
    <nav class="md-nav" aria-label="聊天模式">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#_44" class="md-nav__link">
    百度
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#faster_whisper" class="md-nav__link">
    faster_whisper
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
          <li class="md-nav__item">
  <a href="#llm" class="md-nav__link">
    LLM
  </a>
  
    <nav class="md-nav" aria-label="LLM">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#chatgpt_1" class="md-nav__link">
    ChatGPT
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#claude" class="md-nav__link">
    Claude
  </a>
  
    <nav class="md-nav" aria-label="Claude">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#user-token" class="md-nav__link">
    授权以及获取user-token
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#claude-appid" class="md-nav__link">
    获取 claude appid
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
          <li class="md-nav__item">
  <a href="#claude2" class="md-nav__link">
    Claude2
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#chatglm" class="md-nav__link">
    ChatGLM
  </a>
  
    <nav class="md-nav" aria-label="ChatGLM">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#chatglm3" class="md-nav__link">
    ChatGLM3
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
          <li class="md-nav__item">
  <a href="#ai_1" class="md-nav__link">
    智谱AI
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#langchain-chatglm" class="md-nav__link">
    langchain-ChatGLM
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#chat_with_file_1" class="md-nav__link">
    chat_with_file
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#text-generation-webui" class="md-nav__link">
    text-generation-webui
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_45" class="md-nav__link">
    讯飞星火
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_46" class="md-nav__link">
    闻达
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#chatterbot" class="md-nav__link">
    ChatterBot
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#bard" class="md-nav__link">
    Bard
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_47" class="md-nav__link">
    文心一言
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_48" class="md-nav__link">
    通义星尘
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_49" class="md-nav__link">
    千帆大模型
  </a>
  
    <nav class="md-nav" aria-label="千帆大模型">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#_50" class="md-nav__link">
    第三方库
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_51" class="md-nav__link">
    官方库（有版本冲突，暂不启用）
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
          <li class="md-nav__item">
  <a href="#gemini" class="md-nav__link">
    Gemini
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#kimi-chat" class="md-nav__link">
    Kimi Chat
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#qanything" class="md-nav__link">
    QAnything
  </a>
  
    <nav class="md-nav" aria-label="QAnything">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#_52" class="md-nav__link">
    在线
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_53" class="md-nav__link">
    本地
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_54" class="md-nav__link">
    通义千问
  </a>
  
    <nav class="md-nav" aria-label="通义千问">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#api_1" class="md-nav__link">
    API类型
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#web" class="md-nav__link">
    web类型
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
          <li class="md-nav__item">
  <a href="#fastgpt" class="md-nav__link">
    FastGPT
  </a>
  
    <nav class="md-nav" aria-label="FastGPT">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#_55" class="md-nav__link">
    在线
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
          <li class="md-nav__item">
  <a href="#tts" class="md-nav__link">
    TTS
  </a>
  
    <nav class="md-nav" aria-label="TTS">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#elevenlabs" class="md-nav__link">
    elevenlabs
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#genshinvoicetop" class="md-nav__link">
    genshinvoice.top
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#ttsai-labtop" class="md-nav__link">
    tts.ai-lab.top
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#vitsvits-simple-api" class="md-nav__link">
    VITS（vits-simple-api）
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#vits-fast-fine-tuning" class="md-nav__link">
    VITS-fast-fine-tuning
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#vall-e-x" class="md-nav__link">
    VALL-E-X
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#openvoice" class="md-nav__link">
    OpenVoice
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#gpt-sovits" class="md-nav__link">
    GPT-SoVITS
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#clone-voice" class="md-nav__link">
    clone-voice
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#azure-tts" class="md-nav__link">
    Azure TTS
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#fish-speech" class="md-nav__link">
    fish-speech
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_56" class="md-nav__link">
    变声
  </a>
  
    <nav class="md-nav" aria-label="变声">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#ddsp-svc" class="md-nav__link">
    DDSP-SVC
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#so-vits-svc" class="md-nav__link">
    so-vits-svc
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_57" class="md-nav__link">
    虚拟身体
  </a>
  
    <nav class="md-nav" aria-label="虚拟身体">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#live2d" class="md-nav__link">
    Live2D
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#nvidia-omniverse-audio2face" class="md-nav__link">
    NVIDIA Omniverse Audio2Face
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#xuniren" class="md-nav__link">
    xuniren
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#easyaivtuber" class="md-nav__link">
    EasyAIVtuber
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_58" class="md-nav__link">
    数字人视频播放器
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_59" class="md-nav__link">
    翻译
  </a>
  
    <nav class="md-nav" aria-label="翻译">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#_60" class="md-nav__link">
    百度翻译
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_61" class="md-nav__link">
    其他
  </a>
  
    <nav class="md-nav" aria-label="其他">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#stable-diffusion" class="md-nav__link">
    Stable Diffusion
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#web_1" class="md-nav__link">
    web字幕打印机
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_62" class="md-nav__link">
    按键映射
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#audio-player" class="md-nav__link">
    audio player（音频播放器）
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
      </ul>
    </nav>
  
</li>
      
        <li class="md-nav__item">
  <a href="#_63" class="md-nav__link">
    🀅开发&amp;项目相关
  </a>
  
    <nav class="md-nav" aria-label="🀅开发&项目相关">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#_64" class="md-nav__link">
    简易流程图
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#ui" class="md-nav__link">
    UI设计
  </a>
  
    <nav class="md-nav" aria-label="UI设计">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#nicegui" class="md-nav__link">
    NiceGUI
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#pyqt5" class="md-nav__link">
    PyQt5
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_65" class="md-nav__link">
    源码开发
  </a>
  
    <nav class="md-nav" aria-label="源码开发">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#llm_1" class="md-nav__link">
    新增LLM
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_66" class="md-nav__link">
    打包懒人包
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#md" class="md-nav__link">
    MD目录自动生成
  </a>
  
    <nav class="md-nav" aria-label="MD目录自动生成">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#_67" class="md-nav__link">
    安装
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_68" class="md-nav__link">
    使用
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_69" class="md-nav__link">
    文档生成
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_70" class="md-nav__link">
    文档生成(简易旧版)
  </a>
  
    <nav class="md-nav" aria-label="文档生成(简易旧版)">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#docsify-cli" class="md-nav__link">
    安装docsify-cli工具
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_71" class="md-nav__link">
    初始化项目
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_72" class="md-nav__link">
    启动服务
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_73" class="md-nav__link">
    测试
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
      
        <li class="md-nav__item">
  <a href="#_74" class="md-nav__link">
    🖹待办事项
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#_75" class="md-nav__link">
    📝更新日志
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#star" class="md-nav__link">
    ⭐️Star 经历
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#_76" class="md-nav__link">
    🤝贡献
  </a>
  
    <nav class="md-nav" aria-label="🤝贡献">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#_77" class="md-nav__link">
    🎉鸣谢
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_78" class="md-nav__link">
    💸投资方
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_79" class="md-nav__link">
    合作伙伴
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_80" class="md-nav__link">
    🙌赞助
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
      
    </ul>
  
</nav>
      
    </li>
  

    
  </ul>
</nav>
                  </div>
                </div>
              </div>
            
            
              
                
              
              <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
                <div class="md-sidebar__scrollwrap">
                  <div class="md-sidebar__inner">
                    

<nav class="md-nav md-nav--secondary" aria-label="目录">
  
  
  
    
  
  
    <label class="md-nav__title" for="__toc">
      <span class="md-nav__icon md-icon"></span>
      目录
    </label>
    <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
      
        <li class="md-nav__item">
  <a href="#_1" class="md-nav__link">
     项目结构
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#_2" class="md-nav__link">
     下载项目
  </a>
  
    <nav class="md-nav" aria-label="下载项目">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#git-zip" class="md-nav__link">
    首先你得装个 git（啥，没装？百度），当然也可以直接在页面切换分支后下载各版本 ZIP 压缩包
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
      
        <li class="md-nav__item">
  <a href="#_3" class="md-nav__link">
     运行环境
  </a>
  
    <nav class="md-nav" aria-label="运行环境">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#_4" class="md-nav__link">
    操作系统
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#python-31011" class="md-nav__link">
    Python 版本 3.10.11
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
      
        <li class="md-nav__item">
  <a href="#_5" class="md-nav__link">
     配置
  </a>
  
    <nav class="md-nav" aria-label="配置">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#webui-webui" class="md-nav__link">
    WebUI 程序运行后会自动加载配置文件，可以通过 WebUI 程序进行配置修改（清空配置项可以看到配置项的说明），也可以手动修改配置运行。
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
      
        <li class="md-nav__item">
  <a href="#chatgpt" class="md-nav__link">
     ChatGPT 代理
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#chat_with_file" class="md-nav__link">
     chat_with_file 模式说明
  </a>
  
    <nav class="md-nav" aria-label="chat_with_file 模式说明">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#_6" class="md-nav__link">
    模式简介
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_7" class="md-nav__link">
    模式配置
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
      
        <li class="md-nav__item">
  <a href="#_8" class="md-nav__link">
     使用
  </a>
  
    <nav class="md-nav" aria-label="使用">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#_9" class="md-nav__link">
    各版本都需要做的前期准备操作。
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
      
        <li class="md-nav__item">
  <a href="#_10" class="md-nav__link">
    运行环境
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#_11" class="md-nav__link">
    安装依赖
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#ai" class="md-nav__link">
    如何训练自己的AI？
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#_12" class="md-nav__link">
    常见问题
  </a>
  
    <nav class="md-nav" aria-label="常见问题">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#_13" class="md-nav__link">
    哔哩哔哩版
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_14" class="md-nav__link">
    抖音版
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_15" class="md-nav__link">
    抖音版 旧版
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_16" class="md-nav__link">
    快手版
  </a>
  
    <nav class="md-nav" aria-label="快手版">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#_17" class="md-nav__link">
    新版本：
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_18" class="md-nav__link">
    旧版本：
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_19" class="md-nav__link">
    微信视频号版
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_20" class="md-nav__link">
    斗鱼版
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#youtube" class="md-nav__link">
    YouTube版
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#twitch" class="md-nav__link">
    twitch版
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_21" class="md-nav__link">
    聊天模式
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
      
        <li class="md-nav__item">
  <a href="#_22" class="md-nav__link">
     效果图
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#_23" class="md-nav__link">
     常见问题
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#api" class="md-nav__link">
    API
  </a>
  
    <nav class="md-nav" aria-label="API">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#config" class="md-nav__link">
    配置config
  </a>
  
    <nav class="md-nav" aria-label="配置config">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#_24" class="md-nav__link">
    概述
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_25" class="md-nav__link">
    请求参数
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_26" class="md-nav__link">
    响应
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_27" class="md-nav__link">
    系统命令
  </a>
  
    <nav class="md-nav" aria-label="系统命令">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#_28" class="md-nav__link">
    概述
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_29" class="md-nav__link">
    请求参数
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_30" class="md-nav__link">
    响应
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_31" class="md-nav__link">
    发送数据
  </a>
  
    <nav class="md-nav" aria-label="发送数据">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#_32" class="md-nav__link">
    概述
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_33" class="md-nav__link">
    请求参数
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_34" class="md-nav__link">
    响应
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
      </ul>
    </nav>
  
</li>
      
        <li class="md-nav__item">
  <a href="#_35" class="md-nav__link">
     应用实例
  </a>
  
    <nav class="md-nav" aria-label="应用实例">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#pk" class="md-nav__link">
    PK、连麦玩法如何配置？
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
      
        <li class="md-nav__item">
  <a href="#_36" class="md-nav__link">
     补充
  </a>
  
    <nav class="md-nav" aria-label="补充">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#_37" class="md-nav__link">
    补充板块提供了对项目接入的第三方技术或应用的详细说明。如果您需要与第三方应用进行对接，您可以查阅此板块的内容，并访问第三方官方网站以了解其使用方法。
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_38" class="md-nav__link">
    平台
  </a>
  
    <nav class="md-nav" aria-label="平台">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#b" class="md-nav__link">
    b站直播监听
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_39" class="md-nav__link">
    抖音弹幕获取
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_40" class="md-nav__link">
    快手弹幕获取
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_41" class="md-nav__link">
    微信视频号监听
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_42" class="md-nav__link">
    斗鱼直播监听
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#youtube_1" class="md-nav__link">
    YouTube直播监听
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#twitch_1" class="md-nav__link">
    twitch直播监听
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#tiktok" class="md-nav__link">
    TikTok
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_43" class="md-nav__link">
    聊天模式
  </a>
  
    <nav class="md-nav" aria-label="聊天模式">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#_44" class="md-nav__link">
    百度
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#faster_whisper" class="md-nav__link">
    faster_whisper
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
          <li class="md-nav__item">
  <a href="#llm" class="md-nav__link">
    LLM
  </a>
  
    <nav class="md-nav" aria-label="LLM">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#chatgpt_1" class="md-nav__link">
    ChatGPT
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#claude" class="md-nav__link">
    Claude
  </a>
  
    <nav class="md-nav" aria-label="Claude">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#user-token" class="md-nav__link">
    授权以及获取user-token
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#claude-appid" class="md-nav__link">
    获取 claude appid
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
          <li class="md-nav__item">
  <a href="#claude2" class="md-nav__link">
    Claude2
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#chatglm" class="md-nav__link">
    ChatGLM
  </a>
  
    <nav class="md-nav" aria-label="ChatGLM">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#chatglm3" class="md-nav__link">
    ChatGLM3
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
          <li class="md-nav__item">
  <a href="#ai_1" class="md-nav__link">
    智谱AI
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#langchain-chatglm" class="md-nav__link">
    langchain-ChatGLM
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#chat_with_file_1" class="md-nav__link">
    chat_with_file
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#text-generation-webui" class="md-nav__link">
    text-generation-webui
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_45" class="md-nav__link">
    讯飞星火
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_46" class="md-nav__link">
    闻达
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#chatterbot" class="md-nav__link">
    ChatterBot
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#bard" class="md-nav__link">
    Bard
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_47" class="md-nav__link">
    文心一言
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_48" class="md-nav__link">
    通义星尘
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_49" class="md-nav__link">
    千帆大模型
  </a>
  
    <nav class="md-nav" aria-label="千帆大模型">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#_50" class="md-nav__link">
    第三方库
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_51" class="md-nav__link">
    官方库（有版本冲突，暂不启用）
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
          <li class="md-nav__item">
  <a href="#gemini" class="md-nav__link">
    Gemini
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#kimi-chat" class="md-nav__link">
    Kimi Chat
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#qanything" class="md-nav__link">
    QAnything
  </a>
  
    <nav class="md-nav" aria-label="QAnything">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#_52" class="md-nav__link">
    在线
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_53" class="md-nav__link">
    本地
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_54" class="md-nav__link">
    通义千问
  </a>
  
    <nav class="md-nav" aria-label="通义千问">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#api_1" class="md-nav__link">
    API类型
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#web" class="md-nav__link">
    web类型
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
          <li class="md-nav__item">
  <a href="#fastgpt" class="md-nav__link">
    FastGPT
  </a>
  
    <nav class="md-nav" aria-label="FastGPT">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#_55" class="md-nav__link">
    在线
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
          <li class="md-nav__item">
  <a href="#tts" class="md-nav__link">
    TTS
  </a>
  
    <nav class="md-nav" aria-label="TTS">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#elevenlabs" class="md-nav__link">
    elevenlabs
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#genshinvoicetop" class="md-nav__link">
    genshinvoice.top
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#ttsai-labtop" class="md-nav__link">
    tts.ai-lab.top
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#vitsvits-simple-api" class="md-nav__link">
    VITS（vits-simple-api）
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#vits-fast-fine-tuning" class="md-nav__link">
    VITS-fast-fine-tuning
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#vall-e-x" class="md-nav__link">
    VALL-E-X
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#openvoice" class="md-nav__link">
    OpenVoice
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#gpt-sovits" class="md-nav__link">
    GPT-SoVITS
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#clone-voice" class="md-nav__link">
    clone-voice
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#azure-tts" class="md-nav__link">
    Azure TTS
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#fish-speech" class="md-nav__link">
    fish-speech
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_56" class="md-nav__link">
    变声
  </a>
  
    <nav class="md-nav" aria-label="变声">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#ddsp-svc" class="md-nav__link">
    DDSP-SVC
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#so-vits-svc" class="md-nav__link">
    so-vits-svc
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_57" class="md-nav__link">
    虚拟身体
  </a>
  
    <nav class="md-nav" aria-label="虚拟身体">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#live2d" class="md-nav__link">
    Live2D
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#nvidia-omniverse-audio2face" class="md-nav__link">
    NVIDIA Omniverse Audio2Face
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#xuniren" class="md-nav__link">
    xuniren
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#easyaivtuber" class="md-nav__link">
    EasyAIVtuber
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_58" class="md-nav__link">
    数字人视频播放器
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_59" class="md-nav__link">
    翻译
  </a>
  
    <nav class="md-nav" aria-label="翻译">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#_60" class="md-nav__link">
    百度翻译
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_61" class="md-nav__link">
    其他
  </a>
  
    <nav class="md-nav" aria-label="其他">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#stable-diffusion" class="md-nav__link">
    Stable Diffusion
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#web_1" class="md-nav__link">
    web字幕打印机
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_62" class="md-nav__link">
    按键映射
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#audio-player" class="md-nav__link">
    audio player（音频播放器）
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
      </ul>
    </nav>
  
</li>
      
        <li class="md-nav__item">
  <a href="#_63" class="md-nav__link">
    🀅开发&amp;项目相关
  </a>
  
    <nav class="md-nav" aria-label="🀅开发&项目相关">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#_64" class="md-nav__link">
    简易流程图
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#ui" class="md-nav__link">
    UI设计
  </a>
  
    <nav class="md-nav" aria-label="UI设计">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#nicegui" class="md-nav__link">
    NiceGUI
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#pyqt5" class="md-nav__link">
    PyQt5
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_65" class="md-nav__link">
    源码开发
  </a>
  
    <nav class="md-nav" aria-label="源码开发">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#llm_1" class="md-nav__link">
    新增LLM
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_66" class="md-nav__link">
    打包懒人包
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#md" class="md-nav__link">
    MD目录自动生成
  </a>
  
    <nav class="md-nav" aria-label="MD目录自动生成">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#_67" class="md-nav__link">
    安装
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_68" class="md-nav__link">
    使用
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_69" class="md-nav__link">
    文档生成
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_70" class="md-nav__link">
    文档生成(简易旧版)
  </a>
  
    <nav class="md-nav" aria-label="文档生成(简易旧版)">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#docsify-cli" class="md-nav__link">
    安装docsify-cli工具
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_71" class="md-nav__link">
    初始化项目
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_72" class="md-nav__link">
    启动服务
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_73" class="md-nav__link">
    测试
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
      
        <li class="md-nav__item">
  <a href="#_74" class="md-nav__link">
    🖹待办事项
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#_75" class="md-nav__link">
    📝更新日志
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#star" class="md-nav__link">
    ⭐️Star 经历
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#_76" class="md-nav__link">
    🤝贡献
  </a>
  
    <nav class="md-nav" aria-label="🤝贡献">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#_77" class="md-nav__link">
    🎉鸣谢
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_78" class="md-nav__link">
    💸投资方
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_79" class="md-nav__link">
    合作伙伴
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_80" class="md-nav__link">
    🙌赞助
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
      
    </ul>
  
</nav>
                  </div>
                </div>
              </div>
            
          
          
            <div class="md-content" data-md-component="content">
              <article class="md-content__inner md-typeset">
                
                  

  
  


<h1 id="luna-ai">✨ Luna AI ✨</h1>
<div class="admonition tip">
<p class="admonition-title">数据</p>
<p><a href="//github.com/Ikaros-521/AI-Vtuber/stargazers">
    <img alt="GitHub stars" src="//img.shields.io/github/stars/Ikaros-521/AI-Vtuber?color=%09%2300BFFF&style=flat-square">
</a>
<a href="//github.com/Ikaros-521/AI-Vtuber/issues">
    <img alt="GitHub issues" src="//img.shields.io/github/issues/Ikaros-521/AI-Vtuber?color=Emerald%20green&style=flat-square">
</a>
<a href="//github.com/Ikaros-521/AI-Vtuber/network">
    <img alt="GitHub forks" src="//img.shields.io/github/forks/Ikaros-521/AI-Vtuber?color=%2300BFFF&style=flat-square">
</a>
<a href="/">
    <img src="//img.shields.io/github/license/Ikaros-521/AI-Vtuber.svg" alt="license">
</a>
<a href="//www.python.org">
    <img src="//img.shields.io/badge/python-3.10+-blue.svg" alt="python">
</a></p>
</div>
<div class="admonition example inline end">
<p class="admonition-title">广告</p>
<p>如需付费调试，请联系 <code>327209194</code></p>
<p>交流群 <code>587663288</code></p>
</div>
<div class="admonition quote">
<p class="admonition-title">介绍</p>
<p><code>Luna AI</code> 是一款结合了最先进技术的虚拟AI主播。它的核心是一系列高效的人工智能模型，包括 <code>ChatterBot、GPT、Claude、langchain、chatglm、text-generation-webui、讯飞星火、智谱AI、谷歌Bard、文心一言、通义星尘、通义千问、千帆大模型、Gemini、Kimi Chat、QAnything、koboldcpp、FastGPT</code>。这些模型既可以在本地运行，也可以通过云端服务提供支持。</p>
<p><code>Luna AI</code> 的外观由 <code>Live2D、Vtube Studio、xuniren、UE5 结合 Audio2Face、EasyAIVtuber、数字人视频播放器（Easy-Wav2Lip）</code> 技术打造，为用户提供了一个生动、互动的虚拟形象。这使得 <code>Luna AI</code> 能够在各大直播平台，如 <code>Bilibili、抖音、快手、微信视频号、斗鱼、YouTube、Twitch 和 TikTok</code>，进行实时互动直播。当然，它也可以在本地环境中与您进行个性化对话。</p>
<p>为了使交流更加自然，<code>Luna AI</code> 使用了先进的自然语言处理技术，结合文本转语音系统，如 <code>Edge-TTS、VITS-Fast、elevenlabs、bark-gui、VALL-E-X、睿声AI、genshinvoice.top、tts.ai-lab.top、OpenVoice、GPT_SoVITS、clone-voice、Azure TTS、fish-speech</code>。这不仅让它能够生成流畅的回答，还可以通过 <code>so-vits-svc 和 DDSP-SVC</code> 实现声音的变化，以适应不同的场景和角色。</p>
<p>此外，<code>Luna AI</code> 还能够通过特定指令与 <code>Stable Diffusion</code> 协作，展示画作。用户还可以自定义文案，让 Luna AI 循环播放，以满足不同场合的需求。</p>
</div>
<div class="admonition warning">
<p class="admonition-title">License</p>
<p>这个项目采用 GNU通用公共许可证（GPL） 进行许可。有关详细信息，请参阅 LICENSE 文件。  </p>
<p>This project is licensed under the <code>GNU General Public License (GPL)</code>. Please see the <code>LICENSE</code> file for more details.  </p>
</div>
<div class="admonition danger">
<p class="admonition-title">注意</p>
<p>严禁将此项目用于一切违反《中华人民共和国宪法》，《中华人民共和国刑法》，《中华人民共和国治安管理处罚法》和《中华人民共和国民法典》之用途。  </p>
<p>严禁用于任何政治相关用途。</p>
</div>
<div class="admonition note">
<p class="admonition-title">导航</p>
<p><a href="//space.bilibili.com/3709626/channel/collectiondetail?sid=1422512" target="_blank"><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><!--! Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M0 128c0-35.3 28.7-64 64-64h256c35.3 0 64 28.7 64 64v256c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128zm559.1-28.2c10.4 5.6 16.9 16.4 16.9 28.2v256c0 11.8-6.5 22.6-16.9 28.2s-23 5-32.9-1.6l-96-64-14.2-9.5V174.9l14.2-9.5 96-64c9.8-6.5 22.4-7.2 32.9-1.6z"/></svg></span> 视频教程合集</span></a>
<span> | </span>
<a href="/"><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 9h5.5L13 3.5V9M6 2h8l6 6v12a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4c0-1.11.89-2 2-2m9 16v-2H6v2h9m3-4v-2H6v2h12Z"/></svg></span> 在线文档</span></a>
<span> | </span>
<a href="//github.com/Ikaros-521/AI-Vtuber" target="_blank"><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg></span> GitHub</span></a>
<span> | </span>
<a href="//gitee.com/ikaros-521/AI-Vtuber" target="_blank"><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M11.984 0A12 12 0 0 0 0 12a12 12 0 0 0 12 12 12 12 0 0 0 12-12A12 12 0 0 0 12 0a12 12 0 0 0-.016 0zm6.09 5.333c.328 0 .593.266.592.593v1.482a.594.594 0 0 1-.593.592H9.777c-.982 0-1.778.796-1.778 1.778v5.63c0 .327.266.592.593.592h5.63c.982 0 1.778-.796 1.778-1.778v-.296a.593.593 0 0 0-.592-.593h-4.15a.592.592 0 0 1-.592-.592v-1.482a.593.593 0 0 1 .593-.592h6.815c.327 0 .593.265.593.592v3.408a4 4 0 0 1-4 4H5.926a.593.593 0 0 1-.593-.593V9.778a4.444 4.444 0 0 1 4.445-4.444h8.296Z"/></svg></span> Gitee</span></a></p>
</div>
<p><img alt="mind-map" src="static/images/luna-ai/xmind.png" /></p>
<h2 id="_1"><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 3h6v4H3V3m12 7h6v4h-6v-4m0 7h6v4h-6v-4m-2-4H7v5h6v2H5V9h2v2h6v2Z"/></svg></span> 项目结构</h2>
<div class="admonition abstract">
<p class="admonition-title">项目结构</p>
<ul>
<li><code>config.json</code> 配置文件</li>
<li><code>main.py</code> GUI主程序。会根据配置调用各平台程序</li>
<li><code>utils</code> 文件夹，存储聊天、音频、通用类相关功能的封装实现</li>
<li><code>data</code> 文件夹，存储数据文件、违禁词、文案等</li>
<li><code>log</code> 文件夹，存储运行日志、字幕日志等</li>
<li><code>out</code> 文件夹，存储TTS、SVC输出的音频文件，文案输出的音频文件</li>
<li><code>Live2D</code> 文件夹，存储Live2D源码及模型</li>
<li><code>song</code> 文件夹，存储点歌模式的歌曲</li>
<li><code>docs</code> 文件夹，存储项目相关文档</li>
<li><code>tests</code> 文件夹，存储单一功能点的测试程序</li>
<li><code>cookie</code> 文件夹，存储部分功能需要用到的cookie数据</li>
</ul>
</div>
<h2 id="_2"><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M6.5 20q-2.28 0-3.89-1.57Q1 16.85 1 14.58q0-1.95 1.17-3.48 1.18-1.53 3.08-1.95.58-2.02 2.14-3.4Q8.95 4.38 11 4.08v8.07L9.4 10.6 8 12l4 4 4-4-1.4-1.4-1.6 1.55V4.08q2.58.35 4.29 2.31T19 11q1.73.2 2.86 1.5 1.14 1.28 1.14 3 0 1.88-1.31 3.19T18.5 20Z"/></svg></span> 下载项目</h2>
<h4 id="git-zip">首先你得装个 <code>git</code>（啥，没装？<a href="https://bing.com/search?q=git">百度<span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h7c-.41-.25-.8-.56-1.14-.9a6.478 6.478 0 0 1-.36-9.18C13.69 9.5 17.33 9.13 20 11V8l-6-6m-1 7V3.5L18.5 9H13m7.31 9.9c1.33-2.11.69-4.9-1.4-6.22-2.11-1.33-4.91-.68-6.22 1.4-1.34 2.11-.69 4.89 1.4 6.22 1.46.93 3.32.93 4.79.02L22 23.39 23.39 22l-3.08-3.1m-3.81.1a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5Z"/></svg></span></a>），当然也可以直接在页面切换分支后下载各版本 ZIP 压缩包</h4>
<div class="highlight"><pre><span></span><code><span class="c1"># 主线（推荐）</span>
git<span class="w"> </span>clone<span class="w"> </span>https://github.com/Ikaros-521/AI-Vtuber.git

<span class="c1"># owner分支</span>
git<span class="w"> </span>clone<span class="w"> </span>-b<span class="w"> </span>owner<span class="w"> </span>https://github.com/Ikaros-521/AI-Vtuber.git
</code></pre></div>
<div class="admonition 整合包">
<p class="admonition-title">整合包</p>
<p>Windows整合包下载：
- <a href="//github.com/Ikaros-521/AI-Vtuber/releases">github <span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"/></svg></span></a>
- <a href="https://pan.xunlei.com/s/VNitDF0Y3l-qwTpE0A5Rh4DaA1">迅雷云盘 <span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"/></svg></span></a>
- <a href="https://pan.quark.cn/s/936dcae8aba0">夸克网盘 <span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"/></svg></span></a>
- <a href="https://www.aliyundrive.com/s/JRWomhcpeN9">阿里云盘 <span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"/></svg></span></a></p>
</div>
<h2 id="_3"><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M16.5 5.5a2 2 0 0 0 2-2 2 2 0 0 0-2-2 2 2 0 0 0-2 2 2 2 0 0 0 2 2m-3.6 13.9 1-4.4 2.1 2v6h2v-7.5l-2.1-2 .6-3A7.298 7.298 0 0 0 22 13v-2c-1.76.03-3.4-.89-4.3-2.4l-1-1.6c-.36-.6-1-1-1.7-1-.3 0-.5.1-.8.1L9 8.3V13h2V9.6l1.8-.7-1.6 8.1-4.9-1-.4 2 7 1.4M4 9a1 1 0 0 1-1-1 1 1 0 0 1 1-1h3v2H4m1-4a1 1 0 0 1-1-1 1 1 0 0 1 1-1h5v2H5m-2 8a1 1 0 0 1-1-1 1 1 0 0 1 1-1h4v2H3Z"/></svg></span> 运行环境</h2>
<h4 id="_4">操作系统</h4>
<ul>
<li>Windows 10 及以上</li>
<li>MacOS</li>
<li>Linux</li>
</ul>
<p>Windows部署建议直接使用整合包！  </p>
<p>MacOS部署问题讨论：<a href="https://github.com/Ikaros-521/AI-Vtuber/issues/423">https://github.com/Ikaros-521/AI-Vtuber/issues/423</a><br />
Linux部署问题讨论：<a href="https://github.com/Ikaros-521/AI-Vtuber/issues/520">https://github.com/Ikaros-521/AI-Vtuber/issues/520</a>  </p>
<h4 id="python-31011">Python 版本 <code>3.10.11</code></h4>
<p>依赖的库在 <code>requirements.txt</code> 中，请自行安装。 </p>
<div class="admonition danger">
<p class="admonition-title">注意</p>
<p>安装目录请勿在 <code>中文路径、带有空格的路径、带有特殊字符的路径</code> ，可能会导致程序无法运行或运行异常</p>
</div>
<p>依赖版本参考 <code>requirements_common.txt</code></p>
<p>安装命令参考：  </p>
<div class="highlight"><pre><span></span><code>pip<span class="w"> </span>install<span class="w"> </span>-r<span class="w"> </span>requirements.txt
</code></pre></div>
<p>自行安装依赖100%出现依赖冲突问题，参考仓库issue：<a href="https://github.com/Ikaros-521/AI-Vtuber/issues/655">https://github.com/Ikaros-521/AI-Vtuber/issues/655</a>  </p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>部署视频教程 <a href="//www.bilibili.com/video/BV1fV4y1C77r">哔哩哔哩 <span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"/></svg></span></a>  </p>
</div>
<h2 id="_5"><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M6 2c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4v-1.9l10-10V8l-6-6H6m7 1.5L18.5 9H13V3.5m7.1 9.5c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-2 1.8L12 20.9V23h2.1l6.1-6.1-2.1-2.1Z"/></svg></span> 配置</h2>
<h4 id="webui-webui">WebUI 程序运行后会自动加载配置文件，可以通过 WebUI 程序进行配置修改（清空配置项可以看到配置项的说明），也可以手动修改配置运行。</h4>
<p>配置都在 <code>config.json</code>（此处只列举了大部分，因为实在是太多了，懒了）</p>
<details class="note">
<summary>config.json</summary>
<div class="highlight"><pre><span></span><code><span class="p">{</span>
<span class="w">    </span><span class="c1">// 你的直播间号,兼容全平台，都是直播间页面的链接中最后的数字和字母。例如:123</span>
<span class="w">    </span><span class="nt">&quot;room_display_id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;你的直播间号&quot;</span><span class="p">,</span>
<span class="w">    </span><span class="c1">// 选用的聊天类型：chatterbot/chatgpt/claude/chat_with_file/chatglm/sparkdesk/reread/none 其中reread就是复读机模式,none是不启用</span>
<span class="w">    </span><span class="nt">&quot;chat_type&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;none&quot;</span><span class="p">,</span>
<span class="w">    </span><span class="c1">// 弹幕语言筛选，none就是全部语言，en英文，jp日文，zh中文</span>
<span class="w">    </span><span class="nt">&quot;need_lang&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;none&quot;</span><span class="p">,</span>
<span class="w">    </span><span class="c1">// 请求chatgpt/claude时，携带的字符串头部，用于给每个对话追加固定限制</span>
<span class="w">    </span><span class="nt">&quot;before_prompt&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;请简要回复:&quot;</span><span class="p">,</span>
<span class="w">    </span><span class="c1">// 请求chatgpt/claude时，携带的字符串尾部</span>
<span class="w">    </span><span class="nt">&quot;after_prompt&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;&quot;</span><span class="p">,</span>
<span class="w">    </span><span class="c1">// 弹幕日志类型，用于记录弹幕触发时记录的内容，默认只记录回答，降低当用户使用弹幕日志显示在直播间时，因为用户的不良弹幕造成直播间被封禁问题</span>
<span class="w">    </span><span class="nt">&quot;comment_log_type&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;回答&quot;</span><span class="p">,</span>
<span class="w">    </span><span class="nt">&quot;filter&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w">        </span><span class="c1">// 弹幕过滤，必须携带的触发前缀字符串（任一）</span>
<span class="w">        </span><span class="nt">&quot;before_must_str&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[],</span>
<span class="w">        </span><span class="c1">// 弹幕过滤，必须携带的触发后缀字符串（任一）</span>
<span class="w">        </span><span class="nt">&quot;after_must_str&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
<span class="w">            </span><span class="s2">&quot;.&quot;</span><span class="p">,</span>
<span class="w">            </span><span class="s2">&quot;。&quot;</span><span class="p">,</span>
<span class="w">            </span><span class="s2">&quot;?&quot;</span><span class="p">,</span>
<span class="w">            </span><span class="s2">&quot;？&quot;</span>
<span class="w">        </span><span class="p">],</span>
<span class="w">        </span><span class="c1">// 本地违禁词数据路径（你如果不需要，可以清空文件内容）</span>
<span class="w">        </span><span class="nt">&quot;badwords_path&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;data/badwords.txt&quot;</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// 最长阅读的英文单词数（空格分隔）</span>
<span class="w">        </span><span class="nt">&quot;max_len&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">30</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// 最长阅读的字符数，双重过滤，避免溢出</span>
<span class="w">        </span><span class="nt">&quot;max_char_len&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">50</span>
<span class="w">    </span><span class="p">},</span>
<span class="w">    </span><span class="c1">// 答谢相关配置</span>
<span class="w">    </span><span class="nt">&quot;thanks&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w">        </span><span class="c1">// 是否启用入场欢迎</span>
<span class="w">        </span><span class="nt">&quot;entrance_enable&quot;</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// 是否启用礼物答谢</span>
<span class="w">        </span><span class="nt">&quot;gift_enable&quot;</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// 入场欢迎文案</span>
<span class="w">        </span><span class="nt">&quot;entrance_copy&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;欢迎 {username}&quot;</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// 礼物答谢文案</span>
<span class="w">        </span><span class="nt">&quot;gift_copy&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;感谢 {username} 送的 {gift_name}&quot;</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// 最低礼物答谢金额</span>
<span class="w">        </span><span class="nt">&quot;lowest_price&quot;</span><span class="p">:</span><span class="w"> </span><span class="mf">1.0</span>
<span class="w">    </span><span class="p">},</span>
<span class="w">    </span><span class="c1">// Live2D皮</span>
<span class="w">    </span><span class="nt">&quot;live2d&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w">        </span><span class="c1">// 是否启用</span>
<span class="w">        </span><span class="nt">&quot;enable&quot;</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// web服务监听端口</span>
<span class="w">        </span><span class="nt">&quot;port&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">12345</span>
<span class="w">    </span><span class="p">},</span>
<span class="w">    </span><span class="nt">&quot;openai&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w">        </span><span class="nt">&quot;api&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;https://api.openai.com/v1&quot;</span><span class="p">,</span>
<span class="w">        </span><span class="nt">&quot;api_key&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
<span class="w">            </span><span class="s2">&quot;你的api key&quot;</span>
<span class="w">        </span><span class="p">]</span>
<span class="w">    </span><span class="p">},</span>
<span class="w">    </span><span class="c1">// claude相关配置</span>
<span class="w">    </span><span class="nt">&quot;claude&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w">        </span><span class="c1">// claude相关配置</span>
<span class="w">        </span><span class="c1">// 参考：https://github.com/bincooo/claude-api#readme</span>
<span class="w">        </span><span class="nt">&quot;slack_user_token&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;&quot;</span><span class="p">,</span>
<span class="w">        </span><span class="nt">&quot;bot_user_id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;&quot;</span>
<span class="w">    </span><span class="p">},</span>
<span class="w">    </span><span class="c1">// chatglm相关配置</span>
<span class="w">    </span><span class="nt">&quot;chatglm&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w">        </span><span class="nt">&quot;api_ip_port&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;http://127.0.0.1:8000&quot;</span><span class="p">,</span>
<span class="w">        </span><span class="nt">&quot;max_length&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">2048</span><span class="p">,</span>
<span class="w">        </span><span class="nt">&quot;top_p&quot;</span><span class="p">:</span><span class="w"> </span><span class="mf">0.7</span><span class="p">,</span>
<span class="w">        </span><span class="nt">&quot;temperature&quot;</span><span class="p">:</span><span class="w"> </span><span class="mf">0.95</span>
<span class="w">    </span><span class="p">},</span>
<span class="w">    </span><span class="c1">// 讯飞星火相关配置</span>
<span class="w">    </span><span class="nt">&quot;sparkdesk&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w">        </span><span class="c1">// 两种类型 web api</span>
<span class="w">        </span><span class="nt">&quot;type&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;web&quot;</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// web类型下 抓包中的cookie，详情见拓展教程</span>
<span class="w">        </span><span class="nt">&quot;cookie&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;&quot;</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// web类型下 抓包中的fd</span>
<span class="w">        </span><span class="nt">&quot;fd&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;&quot;</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// web类型下 抓包中的GtToken</span>
<span class="w">        </span><span class="nt">&quot;GtToken&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;&quot;</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// api类型下 申请api后平台中的appid</span>
<span class="w">        </span><span class="nt">&quot;app_id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;&quot;</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// api类型下 申请api后平台中的appsecret</span>
<span class="w">        </span><span class="nt">&quot;api_secret&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;&quot;</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// api类型下 申请api后平台中的appkey</span>
<span class="w">        </span><span class="nt">&quot;api_key&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;&quot;</span>
<span class="w">    </span><span class="p">},</span>
<span class="w">    </span><span class="nt">&quot;chat_with_file&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w">        </span><span class="c1">// 本地向量数据库模式</span>
<span class="w">        </span><span class="nt">&quot;chat_mode&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;claude&quot;</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// 本地文件地址</span>
<span class="w">        </span><span class="nt">&quot;data_path&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;data/伊卡洛斯百度百科.zip&quot;</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// 切分数据块的标志</span>
<span class="w">        </span><span class="nt">&quot;separator&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;\n&quot;</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// 向量数据库数据分块</span>
<span class="w">        </span><span class="nt">&quot;chunk_size&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">100</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// 每个分块之间的重叠字数。字数越多，块与块之间的上下文联系更强，但不能超过chunk_size的大小。同时chunk_size和chunk_overlap越接近，构造向量数据库的耗时越长</span>
<span class="w">        </span><span class="nt">&quot;chunk_overlap&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">50</span><span class="p">,</span>
<span class="w">        </span><span class="nt">&quot;chain_type&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;stuff&quot;</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// 适用于openai模式，显示消耗的token数目</span>
<span class="w">        </span><span class="nt">&quot;show_token_cost&quot;</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span>
<span class="w">        </span><span class="nt">&quot;question_prompt&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;请根据以上content信息进行归纳总结，并结合question的内容给出一个符合content和question语气、语调、背景的回答。不要出现&#39;概括&#39;&#39;综上&#39;&#39;感谢&#39;等字样，向朋友    直接    互相交流即可。如果发现不能content的信息与question不相符，抛弃content的提示，直接回答question即可。任何情况下都要简要地回答!&quot;</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// 最大查询数据库次数。限制次数有助于节省token</span>
<span class="w">        </span><span class="nt">&quot;local_max_query&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// 默认本地向量数据库模型</span>
<span class="w">        </span><span class="nt">&quot;local_vector_embedding_model&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;sebastian-hofstaetter/distilbert-dot-tas_b-b256-msmarco&quot;</span>
<span class="w">    </span><span class="p">},</span>
<span class="w">    </span><span class="c1">// 语音合成类型选择 edge-tts/vits_fast/elevenlabs</span>
<span class="w">    </span><span class="nt">&quot;audio_synthesis_type&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;edge-tts&quot;</span><span class="p">,</span>
<span class="w">    </span><span class="c1">// vits_fast相关配置</span>
<span class="w">    </span><span class="nt">&quot;vits_fast&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w">        </span><span class="c1">// 配置文件的路径</span>
<span class="w">        </span><span class="nt">&quot;vits_fast_config_path&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;E:\\GitHub_pro\\VITS-fast-fine-tuning\\inference\\finetune_speaker.json&quot;</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// 推理服务运行的链接（需要完整的URL）</span>
<span class="w">        </span><span class="nt">&quot;vits_fast_api_ip_port&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;http://127.0.0.1:7860&quot;</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// 选择的说话人，配置文件中的speaker中的其中一个</span>
<span class="w">        </span><span class="nt">&quot;character&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;ikaros&quot;</span>
<span class="w">    </span><span class="p">},</span>
<span class="w">    </span><span class="c1">// so-vits-svc相关配置</span>
<span class="w">    </span><span class="nt">&quot;so_vits_svc&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w">        </span><span class="c1">// 启用功能 true启用 false关闭</span>
<span class="w">        </span><span class="nt">&quot;enable&quot;</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// 模型配置文件路径</span>
<span class="w">        </span><span class="nt">&quot;config_path&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;D:\\so-vits-svc\\configs\\ikaros_v1.json&quot;</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// 服务运行的ip端口（注意，请运行flask_api_full_song.py）</span>
<span class="w">        </span><span class="nt">&quot;api_ip_port&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;http://127.0.0.1:1145&quot;</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// 说话人，源自配置文件</span>
<span class="w">        </span><span class="nt">&quot;spk&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;ikaros&quot;</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// 音调</span>
<span class="w">        </span><span class="nt">&quot;tran&quot;</span><span class="p">:</span><span class="w"> </span><span class="mf">1.0</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// 输出音频格式</span>
<span class="w">        </span><span class="nt">&quot;wav_format&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;wav&quot;</span>
<span class="w">    </span><span class="p">},</span>
<span class="w">    </span><span class="c1">// edge-tts相关配置</span>
<span class="w">    </span><span class="nt">&quot;edge-tts&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w">        </span><span class="c1">// edge-tts选定的说话人(cmd执行：edge-tts -l 可以查看所有支持的说话人)</span>
<span class="w">        </span><span class="nt">&quot;voice&quot;</span><span class="p">:</span><span class="w"> </span><span class="nt">&quot;zh-CN-XiaoyiNeural&quot;</span>
<span class="w">        </span><span class="c1">// 语速增益 默认是 +0%，可以增减，注意 + - %符合别搞没了，不然会影响语音合成</span>
<span class="w">        </span><span class="nt">&quot;rate&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;+0%&quot;</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// 音量增益 默认是 +0%，可以增减，注意 + - %符合别搞没了，不然会影响语音合成</span>
<span class="w">        </span><span class="nt">&quot;volume&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;+0%&quot;</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// 语速</span>
<span class="w">        </span><span class="nt">&quot;speed&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span>
<span class="w">    </span><span class="p">},</span>
<span class="w">    </span><span class="c1">// elevenlabs相关配置</span>
<span class="w">    </span><span class="nt">&quot;elevenlabs&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w">        </span><span class="c1">// elevenlabs密钥，可以不填，默认也有一定额度的免费使用权限，具体多少不知道</span>
<span class="w">        </span><span class="nt">&quot;api_key&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;&quot;</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// 选择的说话人名</span>
<span class="w">        </span><span class="nt">&quot;voice&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;Domi&quot;</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// 选择的模型</span>
<span class="w">        </span><span class="nt">&quot;model&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;eleven_monolingual_v1&quot;</span>
<span class="w">    </span><span class="p">},</span>
<span class="w">    </span><span class="c1">// genshinvoice.top相关配置</span>
<span class="w">    </span><span class="nt">&quot;genshinvoice_top&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w">        </span><span class="c1">// 说话人</span>
<span class="w">        </span><span class="nt">&quot;speaker&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;神里绫华&quot;</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// 输出音频格式 不建议修改</span>
<span class="w">        </span><span class="nt">&quot;format&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;wav&quot;</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// 可用于控制整体语速。默认为1.2</span>
<span class="w">        </span><span class="nt">&quot;length&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;1.25&quot;</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// 控制感情变化程度，默认为0.2</span>
<span class="w">        </span><span class="nt">&quot;noise&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;0.2&quot;</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// 控制音节发音长度变化程度，默认为0.9</span>
<span class="w">        </span><span class="nt">&quot;noisew&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;0.9&quot;</span>
<span class="w">    </span><span class="p">},</span>
<span class="w">    </span><span class="c1">// chatterbot相关配置</span>
<span class="w">    </span><span class="nt">&quot;chatterbot&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w">        </span><span class="c1">// 机器人名</span>
<span class="w">        </span><span class="nt">&quot;name&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;bot&quot;</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// bot数据库路径</span>
<span class="w">        </span><span class="nt">&quot;db_path&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;db.sqlite3&quot;</span>
<span class="w">    </span><span class="p">},</span>
<span class="w">    </span><span class="c1">// chatgpt相关配置</span>
<span class="w">    </span><span class="nt">&quot;chatgpt&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w">        </span><span class="nt">&quot;model&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;gpt-3.5-turbo&quot;</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// 控制生成文本的随机性。较高的温度值会使生成的文本更随机和多样化，而较低的温度值会使生成的文本更加确定和一致。</span>
<span class="w">        </span><span class="nt">&quot;temperature&quot;</span><span class="p">:</span><span class="w"> </span><span class="mf">0.9</span><span class="p">,</span>
<span class="w">        </span><span class="nt">&quot;max_tokens&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">2048</span><span class="p">,</span>
<span class="w">        </span><span class="nt">&quot;top_p&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span>
<span class="w">        </span><span class="nt">&quot;presence_penalty&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span>
<span class="w">        </span><span class="nt">&quot;frequency_penalty&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span>
<span class="w">        </span><span class="nt">&quot;preset&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;请扮演一个AI虚拟主播。不要回答任何敏感问题！不要强调你是主播，只需要回答问题！&quot;</span>
<span class="w">    </span><span class="p">},</span>
<span class="w">    </span><span class="c1">// text-generation-webui相关配置</span>
<span class="w">    </span><span class="nt">&quot;text_generation_webui&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w">        </span><span class="c1">// 服务监听的IP和端口</span>
<span class="w">        </span><span class="nt">&quot;api_ip_port&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;http://127.0.0.1:5000&quot;</span><span class="p">,</span>
<span class="w">        </span><span class="nt">&quot;max_new_tokens&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">250</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// 有 &#39;chat&#39;, &#39;chat-instruct&#39;, &#39;instruct&#39;</span>
<span class="w">        </span><span class="nt">&quot;mode&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;chat&quot;</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// 角色</span>
<span class="w">        </span><span class="nt">&quot;character&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;Example&quot;</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// 聊天指导模板</span>
<span class="w">        </span><span class="nt">&quot;instruction_template&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;Vicuna-v1.1&quot;</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// 你的名字</span>
<span class="w">        </span><span class="nt">&quot;your_name&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;你&quot;</span>
<span class="w">    </span><span class="p">},</span>
<span class="w">    </span><span class="c1">// 是否启用本地问答库匹配机制，优先级最高，如果匹配则直接合成问答库内的内容/返回本地音频，如果不匹配则按照正常流程继续。</span>
<span class="w">    </span><span class="nt">&quot;local_qa&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w">        </span><span class="c1">// 文本匹配模式</span>
<span class="w">        </span><span class="nt">&quot;text&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w">            </span><span class="c1">// 是否启用</span>
<span class="w">            </span><span class="nt">&quot;enable&quot;</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span>
<span class="w">            </span><span class="c1">// 文本问答库文件路径，数据为一问一答形式（换行分隔）</span>
<span class="w">            </span><span class="nt">&quot;file_path&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;data/本地问答库.txt&quot;</span>
<span class="w">        </span><span class="p">},</span>
<span class="w">        </span><span class="c1">// 音频匹配模式</span>
<span class="w">        </span><span class="nt">&quot;audio&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w">            </span><span class="c1">// 是否启用</span>
<span class="w">            </span><span class="nt">&quot;enable&quot;</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span>
<span class="w">            </span><span class="c1">// 文本问答库音频文件路径，匹配的关键词就是音频文件名，为模糊最优匹配</span>
<span class="w">            </span><span class="nt">&quot;file_path&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;out/本地问答音频/&quot;</span>
<span class="w">        </span><span class="p">}</span>
<span class="w">    </span><span class="p">},</span>
<span class="w">    </span><span class="c1">// 点歌模式设置</span>
<span class="w">    </span><span class="nt">&quot;choose_song&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w">        </span><span class="c1">// 是否启用 true启用 false关闭</span>
<span class="w">        </span><span class="nt">&quot;enable&quot;</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// 点歌触发命令（完全匹配才行）</span>
<span class="w">        </span><span class="nt">&quot;start_cmd&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;点歌 &quot;</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// 停止点歌命令（完全匹配才行）</span>
<span class="w">        </span><span class="nt">&quot;stop_cmd&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;取消点歌&quot;</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// 歌曲音频路径（默认为本项目的song文件夹）</span>
<span class="w">        </span><span class="nt">&quot;song_path&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;song&quot;</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// 匹配失败返回的音频文案 注意 {content} 这个是用于替换用户发送的歌名的，请务必不要乱删！影响使用！</span>
<span class="w">        </span><span class="nt">&quot;match_fail_copy&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;抱歉，我还没学会唱{content}&quot;</span>
<span class="w">    </span><span class="p">},</span>
<span class="w">    </span><span class="c1">// stable diffusion相关配置</span>
<span class="w">    </span><span class="nt">&quot;sd&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w">        </span><span class="c1">// 是否启用</span>
<span class="w">        </span><span class="nt">&quot;enable&quot;</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// 触发的关键词（弹幕头部触发）</span>
<span class="w">        </span><span class="nt">&quot;trigger&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;画画：&quot;</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// 服务运行的IP地址</span>
<span class="w">        </span><span class="nt">&quot;ip&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;127.0.0.1&quot;</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// 服务运行的端口</span>
<span class="w">        </span><span class="nt">&quot;port&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">7860</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// 负面文本提示，用于指定与生成图像相矛盾或相反的内容</span>
<span class="w">        </span><span class="nt">&quot;negative_prompt&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;ufsw, longbody, lowres, bad anatomy, bad hands, missing fingers, pubic hair,extra digit, fewer digits, cropped, worst quality,   low quality&quot;</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// 随机种子，用于控制生成过程的随机性。可以设置一个整数值，以获得可重复的结果。</span>
<span class="w">        </span><span class="nt">&quot;seed&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">-1</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// 样式列表，用于指定生成图像的风格。可以包含多个风格，例如 [&quot;anime&quot;, &quot;portrait&quot;]。</span>
<span class="w">        </span><span class="nt">&quot;styles&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[],</span>
<span class="w">        </span><span class="c1">// 提示词相关性，无分类器指导信息影响尺度(Classifier Free Guidance Scale) -图像应在多大程度上服从提示词-较低的值会产生更有创意的结果。</span>
<span class="w">        </span><span class="nt">&quot;cfg_scale&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">7</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// 生成图像的步数，用于控制生成的精确程度。</span>
<span class="w">        </span><span class="nt">&quot;steps&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">30</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// 是否启用高分辨率生成。默认为 False。</span>
<span class="w">        </span><span class="nt">&quot;enable_hr&quot;</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// 高分辨率缩放因子，用于指定生成图像的高分辨率缩放级别。</span>
<span class="w">        </span><span class="nt">&quot;hr_scale&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// 高分辨率生成的第二次传递步数。</span>
<span class="w">        </span><span class="nt">&quot;hr_second_pass_steps&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">20</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// 生成图像的水平尺寸。</span>
<span class="w">        </span><span class="nt">&quot;hr_resize_x&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">512</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// 生成图像的垂直尺寸。</span>
<span class="w">        </span><span class="nt">&quot;hr_resize_y&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">512</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// 去噪强度，用于控制生成图像中的噪点。</span>
<span class="w">        </span><span class="nt">&quot;denoising_strength&quot;</span><span class="p">:</span><span class="w"> </span><span class="mf">0.4</span>
<span class="w">    </span><span class="p">},</span>
<span class="w">    </span><span class="c1">// 文案相关配置（待更新）</span>
<span class="w">    </span><span class="nt">&quot;copywriting&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w">        </span><span class="c1">// 文案文件存储路径，不建议更改。</span>
<span class="w">        </span><span class="nt">&quot;file_path&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;data/copywriting/&quot;</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// 文案文件存储路径2，不建议更改。</span>
<span class="w">        </span><span class="nt">&quot;file_path2&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;data/copywriting2/&quot;</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// 文案音频文件存储路径，不建议更改。</span>
<span class="w">        </span><span class="nt">&quot;audio_path&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;out/copywriting/&quot;</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// 文案音频文件存储路径2，不建议更改。</span>
<span class="w">        </span><span class="nt">&quot;audio_path2&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;out/copywriting2/&quot;</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// 播放音频文件列表</span>
<span class="w">        </span><span class="nt">&quot;play_list&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
<span class="w">            </span><span class="s2">&quot;测试文案2.wav&quot;</span><span class="p">,</span>
<span class="w">            </span><span class="s2">&quot;测试文案3.wav&quot;</span><span class="p">,</span>
<span class="w">            </span><span class="s2">&quot;吐槽.wav&quot;</span>
<span class="w">        </span><span class="p">],</span>
<span class="w">        </span><span class="c1">// 播放音频文件列表2</span>
<span class="w">        </span><span class="nt">&quot;play_list&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
<span class="w">            </span><span class="s2">&quot;test.wav&quot;</span>
<span class="w">        </span><span class="p">],</span>
<span class="w">        </span><span class="c1">// 文案音频播放之间的间隔时间。就是前一个文案播放完成后，到后一个文案开始播放之间的间隔时间。</span>
<span class="w">        </span><span class="nt">&quot;audio_interval&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">5</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// 文案音频切换到弹幕音频的切换间隔时间（反之一样）。就是在播放文案时，有弹幕触发并合成完毕，此时会暂停文案播放，然后等待这个间隔时间后，再播放弹幕回复音频。</span>
<span class="w">        </span><span class="nt">&quot;switching_interval&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">5</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// 文案随机播放，就是不根据播放音频文件列表的顺序播放，而是随机打乱顺序进行播放。</span>
<span class="w">        </span><span class="nt">&quot;random_play&quot;</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span>
<span class="w">    </span><span class="p">},</span>
<span class="w">    </span><span class="nt">&quot;header&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w">        </span><span class="nt">&quot;userAgent&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36 Edg/113.0.1774.42&quot;</span>
<span class="w">    </span><span class="p">},</span>
<span class="w">    </span><span class="c1">// 聊天模式相关配置</span>
<span class="w">    </span><span class="nt">&quot;talk&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w">        </span><span class="c1">// 你的名称</span>
<span class="w">        </span><span class="nt">&quot;username&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;主人&quot;</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// 使用的语音识别类型 baidu / google</span>
<span class="w">        </span><span class="nt">&quot;type&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;google&quot;</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// 录音触发按键（长按此按键进行录音）</span>
<span class="w">        </span><span class="nt">&quot;trigger_key&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;1&quot;</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// 音量阈值，指的是触发录音的起始音量值，请根据自己的麦克风进行微调到最佳</span>
<span class="w">        </span><span class="nt">&quot;volume_threshold&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">800</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// 沉默阈值，指的是触发停止路径的最低音量值，请根据自己的麦克风进行微调到最佳</span>
<span class="w">        </span><span class="nt">&quot;silence_threshold&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">15</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// 百度语音识别 申请：https://console.bce.baidu.com/ai/#/ai/speech/overview/index</span>
<span class="w">        </span><span class="nt">&quot;baidu&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w">            </span><span class="c1">// 百度云 语音识别应用的 AppID</span>
<span class="w">            </span><span class="nt">&quot;app_id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;&quot;</span><span class="p">,</span>
<span class="w">            </span><span class="c1">// 百度云 语音识别应用的 API Key</span>
<span class="w">            </span><span class="nt">&quot;api_key&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;&quot;</span><span class="p">,</span>
<span class="w">            </span><span class="c1">// 百度云 语音识别应用的 Secret Key</span>
<span class="w">            </span><span class="nt">&quot;secret_key&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;&quot;</span>
<span class="w">        </span><span class="p">},</span>
<span class="w">        </span><span class="c1">// 谷歌语音识别</span>
<span class="w">        </span><span class="nt">&quot;google&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w">            </span><span class="c1">// 录音后识别转换成的目标语言（就是你说的语言）</span>
<span class="w">            </span><span class="nt">&quot;tgt_lang&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;zh-CN&quot;</span>
<span class="w">        </span><span class="p">}</span>
<span class="w">    </span><span class="p">},</span>
<span class="w">    </span><span class="c1">// 字幕相关配置</span>
<span class="w">    </span><span class="nt">&quot;captions&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w">        </span><span class="c1">// 是否启用字幕记录</span>
<span class="w">        </span><span class="nt">&quot;enable&quot;</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span>
<span class="w">        </span><span class="c1">// 字幕输出路径</span>
<span class="w">        </span><span class="nt">&quot;file_path&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;log/字幕.txt&quot;</span>
<span class="w">    </span><span class="p">}</span>
<span class="p">}</span>
</code></pre></div>
</details>
<h2 id="chatgpt"><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 3c5.5 0 10 3.58 10 8s-4.5 8-10 8c-1.24 0-2.43-.18-3.53-.5C5.55 21 2 21 2 21c2.33-2.33 2.7-3.9 2.75-4.5C3.05 15.07 2 13.13 2 11c0-4.42 4.5-8 10-8Z"/></svg></span> ChatGPT 代理</h2>
<ul>
<li>例如 <a href="//api2d.com/wiki/doc">API2D <span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"/></svg></span></a>  </li>
</ul>
<div class="highlight"><pre><span></span><code><span class="nt">&quot;openai&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w">    </span><span class="c1">// 代理地址，需要和官方接口一致的才行。例如：api2d</span>
<span class="w">    </span><span class="nt">&quot;api&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;https://oa.api2d.net/v1&quot;</span><span class="p">,</span>
<span class="w">    </span><span class="c1">// 代理站提供的密钥</span>
<span class="w">    </span><span class="nt">&quot;api_key&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
<span class="w">        </span><span class="s2">&quot;fkxxxxxxxxxxx&quot;</span>
<span class="w">    </span><span class="p">]</span>
<span class="p">}</span>
</code></pre></div>
<ul>
<li>one-api</li>
</ul>
<p>官方仓库：<a href="//github.com/songquanpeng/one-api">one-api</a>  </p>
<div class="admonition note">
<p class="admonition-title">或者纯代理的镜像站</p>
<ul>
<li>
<p>合作伙伴 <a href="//m.zlxqai.com">智来星球 <span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"/></svg></span></a> 提供</p>
<ul>
<li><a href="//129.226.219.212:9000">129.226.219.212:9000 <span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"/></svg></span></a></li>
<li><a href="//43.134.230.167:9000">43.134.230.167:9000 <span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"/></svg></span></a></li>
</ul>
</li>
<li>
<p>源自互联网</p>
<ul>
<li><a href="//openai-pag.wangzhishi.net">openai-pag.wangzhishi.net <span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"/></svg></span></a></li>
</ul>
</li>
<li>
<p>如何配置呢？  </p>
<p>GUI中openai api地址配置为：<code>http://openai-pag.wangzhishi.net/v1</code></p>
<p><img alt="image" src="static/images/luna-ai/253742483-ce47dd53-118e-488a-94d6-0d837db23e6c.png" /></p>
</li>
</ul>
</div>
<h2 id="chat_with_file"><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="m15.07 11.25-.9.92C13.45 12.89 13 13.5 13 15h-2v-.5c0-1.11.45-2.11 1.17-2.83l1.24-1.26c.37-.36.59-.86.59-1.41a2 2 0 0 0-2-2 2 2 0 0 0-2 2H8a4 4 0 0 1 4-4 4 4 0 0 1 4 4 3.2 3.2 0 0 1-.93 2.25M13 19h-2v-2h2M12 2A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10c0-5.53-4.5-10-10-10Z"/></svg></span> <code>chat_with_file</code> 模式说明</h2>
<h4 id="_6">模式简介</h4>
<p>用户上传预先设定好的“人物设定”文件（pdf、txt等文本文件），让用户自定义配置角色背景信息、设定</p>
<ol>
<li>
<p>当用户输入一个查询时，这个系统首先会在本地文档集合中进行相似性搜索，寻找与查询最相关的文档</p>
</li>
<li>
<p>然后，它会把这些相关文档以及用户的查询作为输入，传递给语言模型。这个语言模型会基于这些输入生成一个答案</p>
</li>
<li>
<p>如果系统在本地文档集合中找不到任何与用户查询相关的文档，或者如果语言模型无法基于给定的输入生成一个有意义的答案，那么这个系统可能就无法回答用户的查询</p>
</li>
</ol>
<h4 id="_7">模式配置</h4>
<p>chat_type设置为 <code>chat_with_file</code> 方可使用。使用前必须先设置好 <code>opeanai、claude</code> 等模型的访问 <code>token</code> 相关的配置</p>
<p>chat_with_file 目前支持以下模式，在相关配置下的 <code>chat_mode</code> 进行配置</p>
<ul>
<li>
<p><code>claude</code> 使用claude作为聊天模型，需要同时设置好</p>
</li>
<li>
<p><code>local_vector_embedding_model</code> 本地向量数据库。该模式会使用本地向量数据库存储数据</p>
</li>
<li>
<p><code>openai_vector_search</code> 仅仅使用向量数据库作查询，不做gpt的调用，可以节省token，做个简单的本地数据搜索。目前使用OpenAIEmbedding进行向量化，所以需要配置好OpenAI信息</p>
</li>
<li>
<p><code>openai_gpt</code> 从向量数据库中查询到相关信息后，将其传递给gpt模型，让模型作进一步处理</p>
</li>
</ul>
<p>推荐使用 <code>claude</code> 模式，这样可以免费使用，无需消耗 <code>openai</code> 的 <code>token</code></p>
<p>后续会支持更多免费模型，如 <code>文心一言、讯飞星火</code> 等</p>
<div class="admonition note">
<p class="admonition-title">注意</p>
<ol>
<li>
<p>所有模型都应该采用 <code>HuggingFace</code> 模型，暂未适配其他模型</p>
</li>
<li>
<p>本地模型存储目录是 <code>data/text2vec_models</code> ，将自己的模型存储到该位置，在 <code>config.json</code> 配置中填写该模型的 <code>文件夹名字</code> 即可</p>
</li>
<li>
<p>如果需要其他模型，可以从 <code>HuggingFace</code> 中下载下来，存放到对应位置即可</p>
</li>
<li>
<p>也可以直接输入 <code>HuggingFace</code> 的模型名字，如 <a href="//huggingface.co/GanymedeNil/text2vec-large-chinese">GanymedeNil/text2vec-large-chinese <span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"/></svg></span></a> ，项目会自动从远程仓库下载。</p>
<ol>
<li>
<p>请确保能够连接上 <code>HuggingFace</code> (可能需要科学上网)</p>
</li>
<li>
<p>远程仓库下载的模型，一般存储在系统cache中。win端一般是 <code>C:\Users\用户\.cache\torch\sentence_transformers</code> 。也可以将其移动到项目模型存储目录下使用</p>
</li>
</ol>
</li>
<li>
<p><code>openai_vector_search</code> 和 <code>openai_gpt</code> 读取本地数据的内容默认以换行为分隔符，所以可能导致大标题数据丢失问题，需要注意你的数据内容在编辑时不要将核心的内容放在标题部分单独一行，导致丢失 核心数据，尽量将标题和正文写在一行，在真的需要分割的部分进行换行。  </p>
</li>
</ol>
</div>
<h2 id="_8"><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M224 256a128 128 0 1 0 0-256 128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3 0 498.7 13.3 512 29.7 512h388.6c16.4 0 29.7-13.3 29.7-29.7 0-98.5-79.8-178.3-178.3-178.3h-91.4z"/></svg></span> 使用</h2>
<h3 id="_9">各版本都需要做的前期准备操作。</h3>
<details class="note">
<summary><code>Chatterbot</code> 相关安装</summary>
<h2 id="_10">运行环境</h2>
<ul>
<li><code>Python 3.6+</code></li>
</ul>
<h2 id="_11">安装依赖</h2>
<p>在命令行中使用以下命令安装所需库：
<div class="highlight"><pre><span></span><code>pip<span class="w"> </span>install<span class="w"> </span>spacy<span class="w"> </span>ChatterBot
</code></pre></div></p>
<p>如果ChatterBot安装报错，请前往 <a href="//github.com/RaSan147/ChatterBot_update">ChatterBot_update <span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"/></svg></span></a> 安装新版本。下载下来输入 <code>python setup.py install</code> 即可</p>
<p>安装慢，可以拆开来装  <code>pip install SQLAlchemy==1.3.24</code></p>
<h2 id="ai">如何训练自己的AI？</h2>
<ul>
<li>打开 <code>data/db.txt</code> ，写入你想要训练的内容，格式如下</li>
</ul>
<div class="highlight"><pre><span></span><code>问
答
问
答
</code></pre></div>
<ul>
<li>将文件重命名为 <code>data/db.txt</code></li>
<li>在命令行中运行以下命令启动程序：</li>
</ul>
<div class="highlight"><pre><span></span><code>python<span class="w"> </span>train.py
</code></pre></div>
<ul>
<li>训练完的模型名叫 <code>db.sqlite3</code> ，直接双击 <code>main.py</code> 即可使用</li>
</ul>
<h2 id="_12">常见问题</h2>
<ol>
<li>提示缺少 <code>en-core-web-sm</code> ，打开终端输入</li>
</ol>
<div class="highlight"><pre><span></span><code>python<span class="w"> </span>-m<span class="w"> </span>spacy<span class="w"> </span>download<span class="w"> </span>en_core_web_sm
</code></pre></div>
<ol>
<li>报错：no module named ‘spacy’解决办法</li>
</ol>
<div class="highlight"><pre><span></span><code>pip<span class="w"> </span>install<span class="w"> </span>spacy
</code></pre></div>
</details>
<p>启动 GUI/手动 修改 <code>config.json</code> 的配置，配好哈，注意 JSON 数据格式</p>
<h3 id="_13">哔哩哔哩版</h3>
<p>注意：如果使用方案2，需要手动克隆官方项目仓库的<code>blivedm</code>到<code>site-packages</code>  </p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>运行 webui <code>python webui.py</code></p>
<p>单独运行 方案1 <code>python bilibili.py</code></p>
<p>单独运行 方案2 <code>python bilibili2.py</code></p>
</div>
<h3 id="_14">抖音版</h3>
<p>先安装第三方弹幕捕获软件，参考 <a href="#dy">补充-抖音</a></p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>运行 webui <code>python webui.py</code>  </p>
<p>单独运行 <code>python dy.py</code>  </p>
</div>
<h3 id="_15">抖音版 旧版</h3>
<div class="admonition danger">
<p class="admonition-title">不稳定</p>
</div>
<p>运行前请重新生成一下protobuf文件，因为机器系统不一样同时protobuf版本也不一样所以不能拿来直接用～  </p>
<div class="highlight"><pre><span></span><code>protoc<span class="w"> </span>-I<span class="w"> </span>.<span class="w"> </span>--python_out<span class="o">=</span>.<span class="w"> </span>dy.proto
</code></pre></div>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>依赖 <a href="//go.dev/dl/">golang <span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"/></svg></span></a> 环境，还没有的话，手动补一补 <a href="//github.com/protocolbuffers/protobuf/releases">protobuf <span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"/></svg></span></a></p>
</div>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>运行 <code>python main.py</code></p>
</div>
<h3 id="_16">快手版</h3>
<h4 id="_17">新版本：</h4>
<p>请在安装完依赖后，安装火狐浏览器内核。参考命令：<code>playwright install firefox</code></p>
<p>如果你是整合包，项目路径打开cmd，然后使用 <code>Miniconda3\python.exe Miniconda3\Scripts\playwright.exe install firefox</code> 进行安装。</p>
<p>使用新版本时需要注意，请使用小号登录，然后在每次用完之后，把 <code>cookie</code> 文件夹下的 <code>123.json</code> 文件删掉！！！用过一次后 cookie 就异常了，所以需要删了重新登录！！！  </p>
<h4 id="_18">旧版本：</h4>
<p>运行前请重新生成一下 protobuf 文件，因为机器系统不一样同时 protobuf 版本也不一样所以不能拿来直接用～  </p>
<div class="highlight"><pre><span></span><code>protoc<span class="w"> </span>-I<span class="w"> </span>.<span class="w"> </span>--python_out<span class="o">=</span>.<span class="w"> </span>ks.proto
</code></pre></div>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>依赖 <a href="//go.dev/dl/">golang <span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"/></svg></span></a> 环境，还没有的话，手动补一补 <a href="//github.com/protocolbuffers/protobuf/releases">protobuf <span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"/></svg></span></a></p>
</div>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>运行 webui <code>python webui.py</code></p>
</div>
<h3 id="_19">微信视频号版</h3>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>安装监听程序（不保证安全性，自行斟酌） <a href="https://github.com/fire4nt/wxlivespy/releases">wxlivespy</a>，设置监听地址为<code>http://127.0.0.1:8082/wxlive</code>，开播！开始监听，扫描登录直播的微信号。webui修改平台为<code>微信视频号</code>，运行即可。  </p>
</div>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>运行 webui <code>python webui.py</code></p>
</div>
<h3 id="_20">斗鱼版</h3>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>运行 webui <code>python webui.py</code>  </p>
</div>
<p>打开您的浏览器，找到您需要监听的直播间，然后按F12打开开发者工具，点击Console（控制台），复制 <code>douyu_ws_client.js</code> 脚本中的内容，粘贴到控制台，回车运行，启动监听服务</p>
<details class="note">
<summary>douyu_ws_client.js</summary>
<div class="highlight"><pre><span></span><code><span class="kd">let</span><span class="w"> </span><span class="nx">socket</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">null</span><span class="p">;</span>

<span class="kd">function</span><span class="w"> </span><span class="nx">connectWebSocket</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="c1">// 创建 WebSocket 连接，适配服务端</span>
<span class="nx">socket</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="nx">WebSocket</span><span class="p">(</span><span class="s2">&quot;ws://127.0.0.1:5000&quot;</span><span class="p">);</span>

<span class="c1">// 当连接建立时触发</span>
<span class="nx">socket</span><span class="p">.</span><span class="nx">addEventListener</span><span class="p">(</span><span class="s2">&quot;open&quot;</span><span class="p">,</span><span class="w"> </span><span class="nx">event</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="p">{</span>
<span class="w">    </span><span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s2">&quot;ws连接打开&quot;</span><span class="p">);</span>

<span class="w">    </span><span class="c1">// 向服务器发送一条消息</span>
<span class="w">    </span><span class="c1">// socket.send(&quot;ws连接成功&quot;);</span>
<span class="p">});</span>

<span class="c1">// 当收到消息时触发</span>
<span class="nx">socket</span><span class="p">.</span><span class="nx">addEventListener</span><span class="p">(</span><span class="s2">&quot;message&quot;</span><span class="p">,</span><span class="w"> </span><span class="nx">event</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="p">{</span>
<span class="w">    </span><span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s2">&quot;收到服务器数据:&quot;</span><span class="p">,</span><span class="w"> </span><span class="nx">event</span><span class="p">.</span><span class="nx">data</span><span class="p">);</span>
<span class="p">});</span>

<span class="c1">// 当连接关闭时触发</span>
<span class="nx">socket</span><span class="p">.</span><span class="nx">addEventListener</span><span class="p">(</span><span class="s2">&quot;close&quot;</span><span class="p">,</span><span class="w"> </span><span class="nx">event</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="p">{</span>
<span class="w">    </span><span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s2">&quot;WS连接关闭&quot;</span><span class="p">);</span>

<span class="w">    </span><span class="c1">// 重连</span>
<span class="w">    </span><span class="nx">setTimeout</span><span class="p">(()</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="p">{</span>
<span class="w">    </span><span class="nx">connectWebSocket</span><span class="p">();</span>
<span class="w">    </span><span class="p">},</span><span class="w"> </span><span class="mf">1000</span><span class="p">);</span><span class="w"> </span><span class="c1">// 延迟 1 秒后重连</span>
<span class="p">});</span>
<span class="p">}</span>

<span class="c1">// 初始连接</span>
<span class="nx">connectWebSocket</span><span class="p">();</span>


<span class="c1">// 选择需要观察变化的节点</span>
<span class="kd">const</span><span class="w"> </span><span class="nx">targetNode</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">document</span><span class="p">.</span><span class="nx">querySelector</span><span class="p">(</span><span class="s1">&#39;.Barrage-list&#39;</span><span class="p">);</span>

<span class="c1">// 创建观察器实例</span>
<span class="kd">const</span><span class="w"> </span><span class="nx">observer</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="nx">MutationObserver</span><span class="p">(</span><span class="nx">mutations</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="p">{</span>
<span class="nx">mutations</span><span class="p">.</span><span class="nx">forEach</span><span class="p">(</span><span class="nx">mutation</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="p">{</span>
<span class="w">    </span><span class="c1">// 这里处理新增的DOM元素</span>
<span class="w">    </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">mutation</span><span class="p">.</span><span class="nx">type</span><span class="w"> </span><span class="o">===</span><span class="w"> </span><span class="s1">&#39;childList&#39;</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">    </span><span class="nx">mutation</span><span class="p">.</span><span class="nx">addedNodes</span><span class="p">.</span><span class="nx">forEach</span><span class="p">(</span><span class="nx">node</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="p">{</span>
<span class="w">        </span><span class="c1">// 判断是否是新增的弹幕消息</span>
<span class="w">        </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">node</span><span class="p">.</span><span class="nx">classList</span><span class="p">.</span><span class="nx">contains</span><span class="p">(</span><span class="s1">&#39;Barrage-listItem&#39;</span><span class="p">))</span><span class="w"> </span><span class="p">{</span>
<span class="w">        </span><span class="c1">// 新增的动态DOM元素处理</span>
<span class="w">        </span><span class="c1">// console.log(&#39;Added node:&#39;, node);</span>

<span class="w">        </span><span class="kd">const</span><span class="w"> </span><span class="nx">spans</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">node</span><span class="p">.</span><span class="nx">getElementsByTagName</span><span class="p">(</span><span class="s1">&#39;span&#39;</span><span class="p">);</span>

<span class="w">        </span><span class="kd">let</span><span class="w"> </span><span class="nx">username</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">&quot;&quot;</span><span class="p">;</span>
<span class="w">        </span><span class="kd">let</span><span class="w"> </span><span class="nx">content</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">&quot;&quot;</span><span class="p">;</span>

<span class="w">        </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">span</span><span class="w"> </span><span class="k">of</span><span class="w"> </span><span class="nx">spans</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">            </span><span class="c1">//console.log(span);</span>
<span class="w">            </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">span</span><span class="p">.</span><span class="nx">classList</span><span class="p">.</span><span class="nx">contains</span><span class="p">(</span><span class="s1">&#39;Barrage-nickName&#39;</span><span class="p">))</span><span class="w"> </span><span class="p">{</span>
<span class="w">            </span><span class="kd">const</span><span class="w"> </span><span class="nx">targetSpan</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">span</span><span class="p">;</span>
<span class="w">            </span><span class="c1">// 获取用户名</span>
<span class="w">            </span><span class="kd">let</span><span class="w"> </span><span class="nx">tmp</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">targetSpan</span><span class="p">.</span><span class="nx">textContent</span><span class="p">.</span><span class="nx">trim</span><span class="p">().</span><span class="nx">slice</span><span class="p">(</span><span class="mf">0</span><span class="p">,</span><span class="w"> </span><span class="o">-</span><span class="mf">1</span><span class="p">);</span>
<span class="w">            </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">tmp</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="s2">&quot;&quot;</span><span class="p">)</span><span class="w"> </span><span class="nx">username</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">targetSpan</span><span class="p">.</span><span class="nx">textContent</span><span class="p">.</span><span class="nx">trim</span><span class="p">().</span><span class="nx">slice</span><span class="p">(</span><span class="mf">0</span><span class="p">,</span><span class="w"> </span><span class="o">-</span><span class="mf">1</span><span class="p">);</span>
<span class="w">            </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">span</span><span class="p">.</span><span class="nx">classList</span><span class="p">.</span><span class="nx">contains</span><span class="p">(</span><span class="s1">&#39;Barrage-content&#39;</span><span class="p">))</span><span class="w"> </span><span class="p">{</span>
<span class="w">            </span><span class="kd">const</span><span class="w"> </span><span class="nx">targetSpan</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">span</span><span class="p">;</span>
<span class="w">            </span><span class="c1">// 获取弹幕内容</span>
<span class="w">            </span><span class="nx">content</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">targetSpan</span><span class="p">.</span><span class="nx">textContent</span><span class="p">.</span><span class="nx">trim</span><span class="p">();</span>
<span class="w">            </span><span class="p">}</span>
<span class="w">        </span><span class="p">}</span>

<span class="w">        </span><span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">username</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s2">&quot;:&quot;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">content</span><span class="p">);</span>

<span class="w">        </span><span class="c1">// 获取到弹幕数据</span>
<span class="w">        </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">username</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="s2">&quot;&quot;</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="nx">content</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="s2">&quot;&quot;</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">            </span><span class="kd">const</span><span class="w"> </span><span class="nx">data</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span>
<span class="w">            </span><span class="nx">type</span><span class="o">:</span><span class="w"> </span><span class="s2">&quot;comment&quot;</span><span class="p">,</span>
<span class="w">            </span><span class="nx">username</span><span class="o">:</span><span class="w"> </span><span class="nx">username</span><span class="p">,</span>
<span class="w">            </span><span class="nx">content</span><span class="o">:</span><span class="w"> </span><span class="nx">content</span>
<span class="w">            </span><span class="p">};</span>
<span class="w">            </span><span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">data</span><span class="p">);</span>
<span class="w">            </span><span class="nx">socket</span><span class="p">.</span><span class="nx">send</span><span class="p">(</span><span class="nb">JSON</span><span class="p">.</span><span class="nx">stringify</span><span class="p">(</span><span class="nx">data</span><span class="p">));</span>
<span class="w">        </span><span class="p">}</span>
<span class="w">        </span><span class="p">}</span>
<span class="w">    </span><span class="p">})</span>
<span class="w">    </span><span class="p">}</span>
<span class="p">});</span>
<span class="p">});</span>

<span class="c1">// 配置观察选项</span>
<span class="kd">const</span><span class="w"> </span><span class="nx">config</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span>
<span class="nx">childList</span><span class="o">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span>
<span class="nx">subtree</span><span class="o">:</span><span class="w"> </span><span class="kc">true</span>
<span class="p">};</span>

<span class="c1">// 开始观察</span>
<span class="nx">observer</span><span class="p">.</span><span class="nx">observe</span><span class="p">(</span><span class="nx">targetNode</span><span class="p">,</span><span class="w"> </span><span class="nx">config</span><span class="p">);</span>
</code></pre></div>
</details>
<h3 id="youtube">YouTube版</h3>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>运行 webui <code>python webui.py</code></p>
<p>单独运行 <code>python youtube.py</code></p>
</div>
<h3 id="twitch">twitch版</h3>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>运行 webui <code>python webui.py</code></p>
<p>单独运行 <code>python twitch.py</code></p>
</div>
<h3 id="_21">聊天模式</h3>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>运行 webui <code>python webui.py</code></p>
<p>单独运行 <code>python talk.py</code></p>
</div>
<h2 id="_22"><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="m8.5 13.5 2.5 3 3.5-4.5 4.5 6H5m16 1V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2Z"/></svg></span> 效果图</h2>
<div class="admonition note">
<p class="admonition-title">WebUI 界面</p>
<p><img alt="动画" src="static/images/luna-ai/261792128-6ba4ba49-aa1b-43b0-989f-58a851dfd054.gif" /></p>
</div>
<div class="admonition note">
<p class="admonition-title">SD 接入</p>
<p><img alt="image" src="static/images/luna-ai/248568910-a3e4b3b7-96d1-41b1-b45e-f2725acee27c.png" /></p>
</div>
<h2 id="_23"><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M18 15H6l-4 4V3a1 1 0 0 1 1-1h15a1 1 0 0 1 1 1v11a1 1 0 0 1-1 1m5-6v14l-4-4H8a1 1 0 0 1-1-1v-1h14V8h1a1 1 0 0 1 1 1M8.19 4c-.87 0-1.57.2-2.11.59-.52.41-.78.98-.77 1.77l.01.03h1.93c.01-.3.1-.53.28-.69a1 1 0 0 1 .66-.23c.31 0 .57.1.75.28.18.19.26.45.26.75 0 .32-.07.59-.23.82-.14.23-.35.43-.61.59-.51.34-.86.64-1.05.91C7.11 9.08 7 9.5 7 10h2c0-.31.04-.56.13-.74.09-.18.26-.36.51-.52.45-.24.82-.53 1.11-.93.29-.4.44-.81.44-1.31 0-.76-.27-1.37-.81-1.82C9.85 4.23 9.12 4 8.19 4M7 11v2h2v-2H7m6 2h2v-2h-2v2m0-9v6h2V4h-2Z"/></svg></span> 常见问题</h2>
<details class="note">
<summary>部署过程问题</summary>
<ul>
<li>CondaSSLError: OpenSSL appears to be unavailable on this machine</li>
</ul>
<p>本地已经有 <code>Anaconda</code> 环境，在执行 半自动包的<code>1.创建虚拟环境.bat</code>时，出现报错 <code>CondaSSLError: OpenSSL appears to be unavailable on this machine</code></p>
<p><img alt="image" src="static/images/luna-ai/247523399-8f6af198-a362-40ad-9c33-5f9576cdcfa8.png" /></p>
<p>解决方案：参考 <a href="//blog.csdn.net/mynameisyaxuan/article/details/128323026">blog.csdn.net/mynameisyaxuan/article/details/128323026</a>  </p>
<ul>
<li>ModuleNotFoundError: No module named 'xxx' 大同小异</li>
</ul>
<p>都是依赖库缺失问题，可以打开<code>requirements_bilibili.txt</code>/<code>requirements_dy.txt</code>/<code>requirements_ks.txt</code>内查看需要安装的依赖（可能还是遗漏...）  </p>
<p>视情况更换镜像源，国内推荐清华源，如果清华源没有缺失的库，可以走pypi的源，安装命令如：</p>
<p><code>pip install PyQt5 -i https://pypi.tuna.tsinghua.edu.cn/simple</code>  </p>
<p>注意：请在虚拟环境中安装！！！（如果你是根据半自动整合包做的话，先激活虚拟环境<code>conda activate ai_vtb</code>，然后进行安装）  </p>
<div class="highlight"><pre><span></span><code>https://pypi.org/simple
https://pypi.python.org/simple/
https://pypi.tuna.tsinghua.edu.cn/simple
</code></pre></div>
<ul>
<li>ModuleNotFoundError: No module named 'PyQt5'</li>
</ul>
<p>半自动包 运行 <code>GUI运行.bat</code> 时，出现</p>
<div class="highlight"><pre><span></span><code>Traceback<span class="w"> </span><span class="o">(</span>most<span class="w"> </span>recent<span class="w"> </span>call<span class="w"> </span>last<span class="o">)</span>:
<span class="w">  </span>File<span class="w"> </span><span class="s2">&quot;F:\github_pro\AI-Vtuber\main.py&quot;</span>,<span class="w"> </span>line<span class="w"> </span><span class="m">10</span>,<span class="w"> </span><span class="k">in</span><span class="w"> </span>&lt;module&gt;
<span class="w">    </span>from<span class="w"> </span>PyQt5.QtWidgets<span class="w"> </span>import<span class="w"> </span>QApplication,<span class="w"> </span>QMainWindow,<span class="w"> </span>QMessageBox,<span class="w"> </span>QLabel,<span class="w"> </span>QComboBox,<span class="w"> </span>QLineEdit,<span class="w"> </span>QTextEdit,<span class="w"> </span>QDialog
ModuleNotFoundError:<span class="w"> </span>No<span class="w"> </span>module<span class="w"> </span>named<span class="w"> </span><span class="s1">&#39;PyQt5&#39;</span>
</code></pre></div>
<p>解决方案：手动补装 <code>PyQt5</code> ，需要注意，得在 <code>ai_vtb</code> 的虚拟环境中安装</p>
<p>可以发现最左侧有这个括号，表示你激活了 <code>ai_vtb</code> 的虚拟环境中，然后你在运行 后面的pip安装 <code>(ai_vtb) F:\github_pro\AI-Vtuber&gt;pip install PyQt5</code></p>
<p><img alt="image" src="static/images/luna-ai/247523915-ee3ad055-b562-4f12-8797-d6aff44331be.png" /></p>
<ul>
<li>ModuleNotFoundError: No module named 'langid'</li>
</ul>
<p>半自动包 运行 <code>GUI运行.bat</code> 时，出现</p>
<div class="highlight"><pre><span></span><code>Traceback<span class="w"> </span><span class="o">(</span>most<span class="w"> </span>recent<span class="w"> </span>call<span class="w"> </span>last<span class="o">)</span>:
<span class="w">  </span>File<span class="w"> </span><span class="s2">&quot;F:\github_pro\AI-Vtuber\main.py&quot;</span>,<span class="w"> </span>line<span class="w"> </span><span class="m">20</span>,<span class="w"> </span><span class="k">in</span><span class="w"> </span>&lt;module&gt;
<span class="w">    </span>from<span class="w"> </span>utils.common<span class="w"> </span>import<span class="w"> </span>Common
<span class="w">  </span>File<span class="w"> </span><span class="s2">&quot;F:\github_pro\AI-Vtuber\utils\common.py&quot;</span>,<span class="w"> </span>line<span class="w"> </span><span class="m">8</span>,<span class="w"> </span><span class="k">in</span><span class="w"> </span>&lt;module&gt;
<span class="w">    </span>import<span class="w"> </span>langid
ModuleNotFoundError:<span class="w"> </span>No<span class="w"> </span>module<span class="w"> </span>named<span class="w"> </span><span class="s1">&#39;langid&#39;</span>
</code></pre></div>
<p>解决方案：手动补装 <code>langid</code> ，需要注意，得在 <code>ai_vtb</code> 的虚拟环境中安装， <code>pip install langid</code></p>
<p><img alt="image" src="static/images/luna-ai/247598426-3047406b-a25c-4e53-9248-a21684dbaea4.png" /></p>
<p>如果遇到上图安装失败的问题 ， 走官方源下载 <code>pip install langid -i https://pypi.python.org/simple/</code></p>
<p><img alt="image" src="static/images/luna-ai/247524637-0f08c00f-f7ac-41dd-a6a4-7f7539efa843.png" /></p>
<ul>
<li>ModuleNotFoundError: No module named 'profanity'</li>
</ul>
<p>半自动包 运行 <code>GUI运行.bat</code> 时，出现  </p>
<div class="highlight"><pre><span></span><code>Traceback<span class="w"> </span><span class="o">(</span>most<span class="w"> </span>recent<span class="w"> </span>call<span class="w"> </span>last<span class="o">)</span>:
<span class="w">  </span>File<span class="w"> </span><span class="s2">&quot;F:\github_pro\AI-Vtuber\main.py&quot;</span>,<span class="w"> </span>line<span class="w"> </span><span class="m">20</span>,<span class="w"> </span><span class="k">in</span><span class="w"> </span>&lt;module&gt;
<span class="w">    </span>from<span class="w"> </span>utils.common<span class="w"> </span>import<span class="w"> </span>Common
<span class="w">  </span>File<span class="w"> </span><span class="s2">&quot;F:\github_pro\AI-Vtuber\utils\common.py&quot;</span>,<span class="w"> </span>line<span class="w"> </span><span class="m">10</span>,<span class="w"> </span><span class="k">in</span><span class="w"> </span>&lt;module&gt;
<span class="w">    </span>from<span class="w"> </span>profanity<span class="w"> </span>import<span class="w"> </span>profanity
ModuleNotFoundError:<span class="w"> </span>No<span class="w"> </span>module<span class="w"> </span>named<span class="w"> </span><span class="s1">&#39;profanity&#39;</span>
</code></pre></div>
<p>解决方案：手动补装 <code>profanity</code> ，需要注意，得在 <code>ai_vtb</code> 的虚拟环境中安装， <code>pip install profanity</code></p>
<p><img alt="image" src="static/images/luna-ai/247524836-3501aaca-9a08-45e3-b7bd-6aa60f9ea4b9.png" /></p>
<ul>
<li>ModuleNotFoundError: No module named 'ahocorasick'</li>
</ul>
<p>半自动包 运行<code>3.GUI运行.bat</code>时，出现  </p>
<div class="highlight"><pre><span></span><code>Traceback<span class="w"> </span><span class="o">(</span>most<span class="w"> </span>recent<span class="w"> </span>call<span class="w"> </span>last<span class="o">)</span>:
<span class="w">  </span>File<span class="w"> </span><span class="s2">&quot;F:\github_pro\AI-Vtuber\main.py&quot;</span>,<span class="w"> </span>line<span class="w"> </span><span class="m">20</span>,<span class="w"> </span><span class="k">in</span><span class="w"> </span>&lt;module&gt;
<span class="w">    </span>from<span class="w"> </span>utils.common<span class="w"> </span>import<span class="w"> </span>Common
<span class="w">  </span>File<span class="w"> </span><span class="s2">&quot;F:\github_pro\AI-Vtuber\utils\common.py&quot;</span>,<span class="w"> </span>line<span class="w"> </span><span class="m">11</span>,<span class="w"> </span><span class="k">in</span><span class="w"> </span>&lt;module&gt;
<span class="w">    </span>import<span class="w"> </span>ahocorasick
ModuleNotFoundError:<span class="w"> </span>No<span class="w"> </span>module<span class="w"> </span>named<span class="w"> </span><span class="s1">&#39;ahocorasick&#39;</span>
</code></pre></div>
<p>解决方案：手动补装 <code>pyahocorasick</code> ，需要注意，得在 <code>ai_vtb</code> 的虚拟环境中安装， <code>pip install pyahocorasick</code></p>
<p><img alt="image" src="static/images/luna-ai/247523915-ee3ad055-b562-4f12-8797-d6aff44331be.png" /></p>
</details>
<details class="note">
<summary>使用过程问题</summary>
<ul>
<li>openai 接口报错:《empty message》</li>
</ul>
<p>可能是API KEY过期了/额度没了，请检查API KEY是否可用。  </p>
<p>在线测试参考：  </p>
<p><a href="//ikaros521.eu.org/chatgpt-html">ChatGPT-Html</a>  </p>
<p><a href="//chat-gpt-next-web-ikaros-521.vercel.app">ChatGPT-Next-Web</a>  </p>
<ul>
<li>ERROR: Cannot install -r requirements_bilibili.txt (line 23), aiohttp and langchain==0.0.142 because these package versions have conflicting dependencies.</li>
</ul>
<p>依赖冲突问题。可以删除 <code>requirements_bilibili.txt</code> 中的 <code>langchain==0.0.142</code> 和 <code>bilibili-api-python==9.1.0</code> ，然后进行重新安装。安装完成后，手动安装这2个库（按顺序安装）。  </p>
<div class="highlight"><pre><span></span><code>Miniconda3<span class="se">\p</span>ython.exe<span class="w"> </span>-m<span class="w"> </span>pip<span class="w"> </span>install<span class="w"> </span>bilibili-api-python<span class="o">==</span><span class="m">9</span>.1.0
Miniconda3<span class="se">\p</span>ython.exe<span class="w"> </span>-m<span class="w"> </span>pip<span class="w"> </span>install<span class="w"> </span><span class="nv">langchain</span><span class="o">==</span><span class="m">0</span>.0.142
</code></pre></div>
<ul>
<li>ERROR: Conmunicate.<code>__init__</code>() got an unexpected keyword argument 'text'</li>
</ul>
<p>问题根因：Edge-TTS版本过低</p>
<p>解决方案：升级到指定版本 <code>pip install edge-tts==6.1.6</code></p>
<ul>
<li>File ".\flask_api_full_song.py", line 38, in wav2wav  out_audio, out_sr = svc_model.infer(spk, tran, raw_path) ValueError: too many values to unpack (expected 2)
注意！！！如果你是 <code>4.1</code> 版本的整合包，很可能就有这个bug，需要修改 <code>flask_api_full_song.py</code> 的38行左右：<br />
改  </li>
</ul>
<div class="highlight"><pre><span></span><code>out_audio,<span class="w"> </span><span class="nv">out_sr</span><span class="w"> </span><span class="o">=</span><span class="w"> </span>svc_model.infer<span class="o">(</span>spk,<span class="w"> </span>tran,<span class="w"> </span>raw_path<span class="o">)</span>
</code></pre></div>
<p>为</p>
<div class="highlight"><pre><span></span><code>out_audio,<span class="w"> </span>out_sr,<span class="w"> </span><span class="nv">n_frames</span><span class="w"> </span><span class="o">=</span><span class="w"> </span>svc_model.infer<span class="o">(</span>spk,<span class="w"> </span>tran,<span class="w"> </span>raw_path<span class="o">)</span>
</code></pre></div>
<ul>
<li>RuntimeWarning: Couldn't find ffmpeg or avconv - defaulting to ffmpeg, but may not work warn("Couldn't find ffmpeg or avconv - defaulting to ffmpeg, but may not work", RuntimeWarning)</li>
</ul>
<p>问题：pydub依赖ffmpeg，但环境不存在ffmpeg  </p>
<p>解决方案：安装ffmpeg并配置环境变量  </p>
<p>ffmpeg安装教程：<a href="//blog.csdn.net/HYEHYEHYE/article/details/122000352">ffmpeg安装教程</a>  </p>
<p>ffmpeg官方下载：<a href="//ffmpeg.org/download.html">ffmpeg.org/download.html</a>  </p>
<p>ffmpeg本仓库内下载：<a href="//github.com/Ikaros-521/AI-Vtuber/releases/tag/v0.13.0">releases</a>  </p>
<p>简述就是下载，解压，配置 ffmpeg 的 bin 到系统环境变量path中，完事。  </p>
<ul>
<li>qt.qpa.plugin: Could not find the Qt platform plugin "windows" in "" This application failed to start because no Qt platform plugin could be initialized.    Reinstalling the application may fix this problem.</li>
</ul>
<p>问题：无法找到Qt。</p>
<p>解决方案：如果你是整合包，那请检查是否在 <code>中文路径</code> 下！！！如果是自行安装的，可以尝试重装pyqt5。</p>
<ul>
<li>保存配置后没有自动重启，报错 [Errno 2] No such file or directory</li>
</ul>
<p>现象：  </p>
<div class="highlight"><pre><span></span><code><span class="m">2023</span>-08-03<span class="w"> </span><span class="m">17</span>:27:24,700<span class="w"> </span>-<span class="w"> </span>D:<span class="se">\G</span>itHub_pro<span class="se">\A</span>I-Vtuber-20230<span class="w"> </span><span class="m">729</span><span class="se">\m</span>ain.py<span class="o">[</span>line:1386<span class="o">]</span><span class="w"> </span>-<span class="w"> </span>INFO:<span class="w"> </span>配置数据已成功写入文件！程序将在3秒后重启~
D:<span class="se">\G</span>itHub_pro<span class="se">\A</span>I-Vtuber-20230:<span class="w"> </span>can<span class="s1">&#39;t open file &#39;</span>D:<span class="se">\\</span>GitHub_pro<span class="se">\\</span>AI-Vtuber-20230<span class="w"> </span><span class="m">729</span><span class="se">\\</span><span class="m">729</span><span class="se">\\</span>Miniconda3<span class="se">\\</span>python.exe<span class="err">&#39;</span>:<span class="w"> </span><span class="o">[</span>Errno<span class="w"> </span><span class="m">2</span><span class="o">]</span><span class="w"> </span>No<span class="w"> </span>such<span class="w"> </span>file<span class="w"> </span>or<span class="w"> </span>directory
</code></pre></div>
<p>问题：没有自动重启程序，并报错</p>
<p>解决方案：请将项目放在 <code>非中文，无空格</code> 的路径下。  </p>
<p><code>D:\\GitHub_pro\\AI-Vtuber-20230 729</code> ——&gt; <code>D:\\GitHub_pro\\AI-Vtuber-20230729</code></p>
<ul>
<li>更新后报错 ImportError: cannot import name 'sync' from 'bilibili_api'</li>
</ul>
<p>完整报错：</p>
<div class="highlight"><pre><span></span><code>File<span class="w"> </span><span class="s2">&quot;D:\GitHub_pro\AI-Vtuber-20230815\bilibili.py&quot;</span>,<span class="w"> </span>line<span class="w"> </span><span class="m">9</span>,<span class="w"> </span><span class="k">in</span><span class="w"> </span>&lt;module&gt;
<span class="w">    </span>from<span class="w"> </span>bilibili_api<span class="w"> </span>import<span class="w"> </span>live,<span class="w"> </span>sync
ImportError:<span class="w"> </span>cannot<span class="w"> </span>import<span class="w"> </span>name<span class="w"> </span><span class="s1">&#39;sync&#39;</span><span class="w"> </span>from<span class="w"> </span><span class="s1">&#39;bilibili_api&#39;</span><span class="w"> </span><span class="o">(</span>D:<span class="se">\G</span>itHub_pro<span class="se">\A</span>I-Vtuber-20230815<span class="se">\M</span>iniconda3<span class="se">\l</span>ib<span class="se">\s</span>ite-packages<span class="se">\b</span>ilibili_api<span class="se">\_</span>_init__.py<span class="o">)</span>
</code></pre></div>
<p>问题根因：<code>bilibili_api</code>没有<code>sync</code>模块，其实是更新后，<code>bilibili_api</code>不对了，需要重新安装对应依赖。  </p>
<p>解决方案：</p>
<p>1.删除 <code>bilibili-api-python</code> 和 <code>bilibili-api</code> ，参考命令（整合包）： <code>Miniconda3\python.exe -m pip uninstall bilibili-api-python bilibili-api</code>，然后在提示出入（y/n）部分输入 <code>y</code> ，然后回车，共2次。  </p>
<div class="highlight"><pre><span></span><code>Proceed<span class="w"> </span><span class="o">(</span>Y/n<span class="o">)</span>?<span class="w"> </span>y
<span class="w">  </span>Successfully<span class="w"> </span>uninstalled<span class="w"> </span>bilibili-api-python-15.5.3
Proceed<span class="w"> </span><span class="o">(</span>Y/n<span class="o">)</span>?<span class="w"> </span>y
<span class="w">  </span>Successfully<span class="w"> </span>uninstalled<span class="w"> </span>bilibili-api-4.1.0
</code></pre></div>
<p>2.重新安装，可以手动安装 <code>Miniconda3\python.exe -m pip install bilibili-api-python bilibili-api</code> ，也可以直接执行<code>2-2.安装依赖.bat</code>完成安装。 </p>
<ul>
<li>使用ChatGPT API，报错：error_message='You exceeded your current quota, please check your plan and billing details.'</li>
</ul>
<p>可能是API KEY过期了/额度没了，请检查API KEY是否可用。  </p>
<p><img alt="image" src="static/images/luna-ai/266388062-46821c28-0a16-4b86-a395-358a6c8b5b89.png" /></p>
<p>在线测试参考：<br />
<a href="//ikaros521.eu.org/chatgpt-html/">ChatGPT-Html</a><br />
<a href="//chat-gpt-next-web-ikaros-521.vercel.app/">ChatGPT-Next-Web</a>  </p>
<ul>
<li>Miniconda3\Scripts\playwright.exe install Fatal error in launcher: Unable to create process using  '"D:\GitHub_pro\AI-Vtuber-20230729\Miniconda3\python.exe"  "D:\ai3\AI-Vtuber-20230825\Miniconda3\Scripts\playwright.exe" install': ???????????</li>
</ul>
<p>playwright安装浏览器内核失败。   </p>
<p>解决方案：重新安装playwright，需要注意，前提是激活了本地环境  </p>
<div class="highlight"><pre><span></span><code>pip<span class="w"> </span>uninstall<span class="w"> </span>playwright
pip<span class="w"> </span>install<span class="w"> </span>playwright
playwright<span class="w"> </span>install
</code></pre></div>
<ul>
<li>ModuleNotFoundError: No module named 'blivedm.models.web'; 'blivedm.models' is not a package</li>
</ul>
<p>解决方案：<a href="//github.com/Ikaros-521/AI-Vtuber/issues/381#issuecomment-1774128497">AI-Vtuber/issues/381#issuecomment-1774128497</a></p>
</details>
<h2 id="api">API</h2>
<p>API接口地址根据<code>api.py</code>程序配置决定，默认：<code>http://127.0.0.1:8082</code>  </p>
<h3 id="config">配置config</h3>
<h4 id="_24">概述</h4>
<ul>
<li><strong>请求地址:</strong> <code>/set_config</code></li>
<li><strong>请求类型:</strong> POST</li>
<li><strong>描述:</strong> 修改配置文件。</li>
</ul>
<h4 id="_25">请求参数</h4>
<table>
<thead>
<tr>
<th>参数名</th>
<th>类型</th>
<th>是否必需</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>config_path</td>
<td>string</td>
<td>是</td>
<td>配置文件路径，例如：config.json</td>
</tr>
<tr>
<td>data</td>
<td>object</td>
<td>是</td>
<td>配置文件内容（json），例如：{"platform": "bilibili"}</td>
</tr>
</tbody>
</table>
<h4 id="_26">响应</h4>
<table>
<thead>
<tr>
<th>参数名</th>
<th>类型</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>code</td>
<td>int</td>
<td>状态码，200为成功，小于0为错误代码，大于0为部分成功代码</td>
</tr>
<tr>
<td>msg</td>
<td>string</td>
<td>响应消息，描述请求的处理结果</td>
</tr>
</tbody>
</table>
<h3 id="_27">系统命令</h3>
<h4 id="_28">概述</h4>
<ul>
<li><strong>请求地址:</strong> <code>/sys_cmd</code></li>
<li><strong>请求类型:</strong> POST</li>
<li><strong>描述:</strong> 控制系统运行相关命令。</li>
</ul>
<h4 id="_29">请求参数</h4>
<table>
<thead>
<tr>
<th>参数名</th>
<th>类型</th>
<th>是否必需</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>type</td>
<td>string</td>
<td>是</td>
<td>命令类型（run/stop/restart/factory）。例如：run</td>
</tr>
<tr>
<td>data</td>
<td>object</td>
<td>是</td>
<td>数据文件内容（json），根据命令不同，数据内容也相应改变，具体参考源码中的实例。例如：{"config_path": "config.json"}</td>
</tr>
</tbody>
</table>
<h4 id="_30">响应</h4>
<table>
<thead>
<tr>
<th>参数名</th>
<th>类型</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>code</td>
<td>int</td>
<td>状态码，200为成功，小于0为错误代码，大于0为部分成功代码</td>
</tr>
<tr>
<td>msg</td>
<td>string</td>
<td>响应消息，描述请求的处理结果</td>
</tr>
</tbody>
</table>
<h3 id="_31">发送数据</h3>
<h4 id="_32">概述</h4>
<ul>
<li><strong>请求地址:</strong> <code>/send</code></li>
<li><strong>请求类型:</strong> POST</li>
<li><strong>描述:</strong> 发送平台弹幕、礼物、入场、复读等数据进行功能调用。</li>
</ul>
<h4 id="_33">请求参数</h4>
<table>
<thead>
<tr>
<th>参数名</th>
<th>类型</th>
<th>是否必需</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>type</td>
<td>string</td>
<td>是</td>
<td>数据类型（comment/gift/entrance/reread）。例如：comment</td>
</tr>
<tr>
<td>data</td>
<td>object</td>
<td>是</td>
<td>数据文件内容（json），根据命令不同，数据内容也相应改变，具体参考源码中的实例。例如：{"platform":"哔哩哔哩","username":"用户名","content":"弹幕内容"}</td>
</tr>
</tbody>
</table>
<h4 id="_34">响应</h4>
<table>
<thead>
<tr>
<th>参数名</th>
<th>类型</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>code</td>
<td>int</td>
<td>状态码，200为成功，小于0为错误代码，大于0为部分成功代码</td>
</tr>
<tr>
<td>msg</td>
<td>string</td>
<td>响应消息，描述请求的处理结果</td>
</tr>
</tbody>
</table>
<h2 id="_35"><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 13.5a1.5 1.5 0 0 1-1.5-1.5 1.5 1.5 0 0 1 1.5-1.5 1.5 1.5 0 0 1 1.5 1.5 1.5 1.5 0 0 1-1.5 1.5m-5 0a1.5 1.5 0 0 1-1.5-1.5 1.5 1.5 0 0 1 1.5-1.5 1.5 1.5 0 0 1 1.5 1.5 1.5 1.5 0 0 1-1.5 1.5m-5 0A1.5 1.5 0 0 1 7.5 12 1.5 1.5 0 0 1 9 10.5a1.5 1.5 0 0 1 1.5 1.5A1.5 1.5 0 0 1 9 13.5M22 3H7c-.69 0-1.23.35-1.59.88L0 12l5.41 8.11c.36.53.96.89 1.65.89H22a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2Z"/></svg></span> 应用实例</h2>
<h3 id="pk">PK、连麦玩法如何配置？</h3>
<p>参考配置：<a href="https://github.com/Ikaros-521/AI-Vtuber/issues/579">https://github.com/Ikaros-521/AI-Vtuber/issues/579</a>  </p>
<h2 id="_36"><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 13.5a1.5 1.5 0 0 1-1.5-1.5 1.5 1.5 0 0 1 1.5-1.5 1.5 1.5 0 0 1 1.5 1.5 1.5 1.5 0 0 1-1.5 1.5m-5 0a1.5 1.5 0 0 1-1.5-1.5 1.5 1.5 0 0 1 1.5-1.5 1.5 1.5 0 0 1 1.5 1.5 1.5 1.5 0 0 1-1.5 1.5m-5 0A1.5 1.5 0 0 1 7.5 12 1.5 1.5 0 0 1 9 10.5a1.5 1.5 0 0 1 1.5 1.5A1.5 1.5 0 0 1 9 13.5M22 3H7c-.69 0-1.23.35-1.59.88L0 12l5.41 8.11c.36.53.96.89 1.65.89H22a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2Z"/></svg></span> 补充</h2>
<h4 id="_37">补充板块提供了对项目接入的第三方技术或应用的详细说明。如果您需要与第三方应用进行对接，您可以查阅此板块的内容，并访问第三方官方网站以了解其使用方法。</h4>
<h3 id="_38">平台</h3>
<h4 id="b">b站直播监听</h4>
<p>方案1 <a href="//github.com/Nemo2011/bilibili-api">bilibili-api <span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"/></svg></span></a>  </p>
<p>需要进行扫描登录或者配置 cookie 等信息，才能稳定监听弹幕。注意！！！请使用小号登录，有封号风险！！！  </p>
<p>方案2 <a href="//github.com/xfgryujk/blivedm">blivedm <span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"/></svg></span></a>  </p>
<p>注意：如果使用方案2，需要手动克隆官方项目仓库的<code>blivedm</code>到<code>site-packages</code>  </p>
<ul>
<li>cookie模式下，不配置cookie，获取不到完整用户名。自行选择配置。</li>
<li>开放平台模式下，请前往 开放平台: https://open-live.bilibili.com/ 注册成为开发者，“直播创作者服务中心” 创建项目，获取 项目ID 、 access_key_id 、 access_key_secred </li>
</ul>
<h4 id="_39"><span id="dy">抖音弹幕获取</span></h4>
<p><code>dy.py</code> 稳定 <a href="//gitee.com/haodong108/dy-barrage-grab">dy-barrage-grab <span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"/></svg></span></a></p>
<p>请到此仓库的 releases 下载官方软件包，并仔细阅读官方的使用说明，运行后能在cmd看到弹幕消息的话，即为成功。  </p>
<p><code>dy_old.py</code> 不稳定 <a href="//github.com/YunzhiYike/douyin-live">douyin-live <span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"/></svg></span></a>   </p>
<h4 id="_40">快手弹幕获取</h4>
<p><code>ks.py</code> 新版本 <a href="//github.com/Superheroff/kuaishou_websocket">kuaishou_websocket <span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"/></svg></span></a></p>
<p>使用新版本时需要注意，请使用小号登录，然后在每次用完之后，把 <code>cookie</code> 文件夹下的 <code>123.json</code> 文件删掉！！！用过一次后cookie就异常了，所以需要删了重新登录！！！</p>
<p>另外如果你是自行安装环境，请在安装完依赖后，安装火狐浏览器内核。参考命令： <code>playwright install firefox</code></p>
<p>如果你是整合包，项目路径打开cmd，然后使用 <code>Miniconda3\python.exe Miniconda3\Scripts\playwright.exe install firefox</code> 进行安装。</p>
<p><code>ks_old.py</code> 旧版本 <a href="//github.com/YunzhiYike/kuaishou-live">kuaishou-live <span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"/></svg></span></a>  </p>
<h4 id="_41">微信视频号监听</h4>
<p>监听程序（不保证安全性，自行斟酌）：<a href="https://github.com/fire4nt/wxlivespy/releases">wxlivespy</a>  </p>
<p>设置监听地址为<code>http://127.0.0.1:8082/wxlive</code>，开播！开始监听，扫描登录直播的微信号。webui修改平台为<code>微信视频号</code>，运行即可。  </p>
<p>如果希望看到运行日志，可以自己下载项目部署运行。  </p>
<h4 id="_42">斗鱼直播监听</h4>
<p>借鉴 <a href="//github.com/XiaoXinYo/Live-Barrage">Live-Barrage <span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"/></svg></span></a>  </p>
<h4 id="youtube_1">YouTube直播监听</h4>
<p>依赖库：<a href="//github.com/taizan-hokuto/pytchat/tree/master">pytchat</a>  </p>
<p>修改平台后，配置直播间号即可，如<code>https://www.youtube.com/watch?v=P5wlxQgYhMY</code>的直播间号就是<code>P5wlxQgYhMY</code>  </p>
<h4 id="twitch_1">twitch直播监听</h4>
<p>接口源自官方接口: <a href="//irc.chat.twitch.tv">irc.chat.twitch.tv</a>  </p>
<p>使用时需要配置token、用户名、http代理等  </p>
<p>其中token获取方式，通过访问<a href="//twitchapps.com/tmi/">https://twitchapps.com/tmi/</a>，登录twitch账号授权后即可获取返回的token:<code>oauth:xxxxx</code>  </p>
<p>！！！注意：如果你的token和你监听的直播间是同一个账号，那会自动过滤你自己发送的弹幕！！！  </p>
<h4 id="tiktok">TikTok</h4>
<p>视频教程：<a href="https://www.bilibili.com/video/BV1GU421o7Wq">BV1GU421o7Wq</a>  </p>
<h4 id="_43">聊天模式</h4>
<h5 id="_44">百度</h5>
<p>新用户+实名认证后有半年的免费额度可以使用。  </p>
<p>申请地址：<a href="//console.bce.baidu.com/ai/#/ai/speech/overview/index">console.bce.baidu.com/ai/#/ai/speech/overview/index <span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"/></svg></span></a></p>
<details class="note">
<summary>详细教程</summary>
<p><img alt="image" src="static/images/luna-ai/253623086-a91e9dcb-c894-4844-885c-89b8f9f78e6e.png" /></p>
<p><img alt="image" src="static/images/luna-ai/253623108-355e4d12-d854-4249-a736-03c2c93017db.png" /></p>
<p><img alt="image" src="static/images/luna-ai/253623124-3028e135-0791-4638-b56f-028b8397f35f.png" /></p>
<p><img alt="image" src="static/images/luna-ai/253623143-7731d5a0-72f5-4a07-bf98-4f6e34f8ef32.png" /></p>
<p><img alt="image" src="static/images/luna-ai/253623159-6c2fca12-5c6b-478e-a1d3-d3dead79f192.png" /></p>
</details>
<h5 id="faster_whisper">faster_whisper</h5>
<p>安装<a href="https://pytorch.org/">pytorch <span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"/></svg></span></a>，自行适配版本，参考安装命令：<code>pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121</code>  </p>
<p>录音完后，识别会自动下载模型，模型默认存放在<code>models</code>文件夹，可以自行手动下载补充。  </p>
<p>如果在使用时出现下载过模型但第一次运行仍要连接huggingface的情况，可以指定模型路径为本地model.bin的路径，参考：<code>./models/models--Systran--faster-whisper-large-v3/snapshots/edaa852ec7e145841d8ffdb056a99866b5f0a478</code> ，则这个相对路径下有对应的<code>model.bin</code>文件，你的临时文件名不一样，自己找一下。  </p>
<h3 id="llm">LLM</h3>
<h4 id="chatgpt_1">ChatGPT</h4>
<p>官网 <a href="//chat.openai.com/chat">chat.openai.com/chat <span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"/></svg></span></a>  </p>
<p>openai 后台 <a href="//platform.openai.com/">platform.openai.com <span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"/></svg></span></a>  </p>
<p>新建 API KEY <a href="//platform.openai.com/account/api-keys">platform.openai.com/account/api-keys <span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"/></svg></span></a> </p>
<p>查看账号额度 <a href="//platform.openai.com/account/usage">platform.openai.com/account/usage <span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"/></svg></span></a>  </p>
<p>官方 API 文档 <a href="//platform.openai.com/docs/api-reference">platform.openai.com/docs/api-reference <span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"/></svg></span></a>  </p>
<p>常见报错：<a href="https://github.com/Ikaros-521/AI-Vtuber/issues">点击前往issue仓库查找，直接搜索报错内容，一次不要复制太多报错，不然搜不到，复制关键的报错点就行，比如最后一行</a>  </p>
<h4 id="claude">Claude</h4>
<p>实现参考 <a href="//github.com/yokonsan/claude-in-slack-api">claude-in-slack-api <span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"/></svg></span></a>  </p>
<p>API申请方法（内含各个参数的获取方式） <a href="//github.com/bincooo/claude-api">claude-api <span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"/></svg></span></a>  </p>
<p>slack 官网 <a href="//slack.com/intl/zh-cn/">slack.com/intl/zh-cn <span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"/></svg></span></a>  </p>
<p>添加 claude 到 slack <a href="//www.anthropic.com/claude-in-slack">www.anthropic.com/claude-in-slack <span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"/></svg></span></a>  </p>
<div class="admonition note">
<p class="admonition-title">视频教程</p>
<p><a href="//www.bilibili.com/video/BV1PP41127mQ">完美替代 chatGPT！保姆级 Claude 注册教程及使用上的优点和缺点 <span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"/></svg></span></a>  </p>
<p><a href="//www.bilibili.com/video/BV17k4y1H7aa">解决现阶段 slack 新建工作区 Claude 不回复 <span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"/></svg></span></a>  </p>
</div>
<p>以下文档转自：<a href="//github.com/bincooo/claude-api">claude-api <span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"/></svg></span></a>  </p>
<h5 id="user-token">授权以及获取user-token</h5>
<p>网页(<a href="https://app.slack.com">登录</a>)后, 进入api配置页面(<a href="https://api.slack.com/">点我跳转</a>)。</p>
<p>〉》点击 【Create an app】</p>
<p>​   〉》主页看见Your Apps并弹出窗口【Create an app】  〉》  点击【From scratch】</p>
<p>​   〉》填写app名称以及选择工作空间（例：name: Bot, workspace: chat）  〉》  点击【Create App】</p>
<p>​   〉》点击左侧边栏上的【OAuth &amp; Permissions】  〉》  下拉至【Scopes】卡片，在 【User Token Scopes】 项下添加权限，如下：</p>
<p>​                           channels:history,  channels:read,  channels:write,  groups:history,  groups:read,  groups:write, </p>
<p>​                           chat:write,  im:history,  im:write,  mpim:history,  mpim:write</p>
<p>​   〉》回到顶部【OAuth Tokens for Your Workspace】栏，点击【Install to Workspace】，然后确认授权即可</p>
<p>至此，获得拥有一定权限的user-token</p>
<p><img src="https://github.com/bincooo/claude-api/blob/main/static/%E6%88%AA%E5%B1%8F2023-04-18%2009.10.56.png?raw=true" alt="截屏2023-04-18 09.10.56" style="zoom:50%;" /></p>
<p><img src="https://github.com/bincooo/claude-api/blob/main/static/%E6%88%AA%E5%B1%8F2023-04-18%2009.14.41.png?raw=true" alt="截屏2023-04-18 09.14.41" style="zoom:50%;" /></p>
<h5 id="claude-appid">获取 claude appid</h5>
<p><img src="https://github.com/bincooo/claude-api/blob/main/static/%E6%88%AA%E5%B1%8F2023-04-18%2008.49.20.png?raw=true" alt="截屏2023-04-18 08.49.20" style="zoom:50%;" /></p>
<h4 id="claude2">Claude2</h4>
<p><a href="//github.com/wwwzhouhui/Claude2-PyAPI">Claude2-PyAPI <span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"/></svg></span></a></p>
<p>claude2 官网 <a href="//claude.ai">claude.ai <span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"/></svg></span></a></p>
<div class="admonition note">
<p class="admonition-title">Cookie 获取方式</p>
<p>F12 抓包 XHR ，然后请求头获取 cookie`</p>
</div>
<h4 id="chatglm">ChatGLM</h4>
<p>官方仓库：<a href="//github.com/THUDM/ChatGLM-6B">ChatGLM-6B</a></p>
<p>整合包：<a href="//www.bilibili.com/video/BV1E24y1u7Go">【ChatGLM】本地版ChatGPT？6G显存可用！ChatGLM-6B 清华开源模型一键包发布 可更新</a>  </p>
<p>视频教程：<a href="https://www.bilibili.com/video/BV1NN411a7zG">【AI主播-功能篇】ChatGLM如何接入？上下文记忆~ 不需魔法，本地跑，省钱了喵~</a>  </p>
<p>运行 <code>api.py</code> ，然后配置相关信息接入本项目。</p>
<div class="admonition note">
<p class="admonition-title">参考</p>
<div class="highlight"><pre><span></span><code><span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s1">&#39;__main__&#39;</span><span class="p">:</span>
    <span class="n">tokenizer</span> <span class="o">=</span> <span class="n">AutoTokenizer</span><span class="o">.</span><span class="n">from_pretrained</span><span class="p">(</span><span class="s2">&quot;THUDM\chatglm-6b-int4&quot;</span><span class="p">,</span> <span class="n">trust_remote_code</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
    <span class="n">model</span> <span class="o">=</span> <span class="n">AutoModel</span><span class="o">.</span><span class="n">from_pretrained</span><span class="p">(</span><span class="s2">&quot;THUDM\chatglm-6b-int4&quot;</span><span class="p">,</span> <span class="n">trust_remote_code</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="o">.</span><span class="n">half</span><span class="p">()</span><span class="o">.</span><span class="n">cuda</span><span class="p">()</span>
    <span class="n">model</span><span class="o">.</span><span class="n">eval</span><span class="p">()</span>
    <span class="n">uvicorn</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="n">app</span><span class="p">,</span> <span class="n">host</span><span class="o">=</span><span class="s1">&#39;0.0.0.0&#39;</span><span class="p">,</span> <span class="n">port</span><span class="o">=</span><span class="mi">8000</span><span class="p">,</span> <span class="n">workers</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
</code></pre></div>
</div>
<h5 id="chatglm3">ChatGLM3</h5>
<p>官方仓库：<a href="//github.com/THUDM/ChatGLM3">ChatGLM3</a>  </p>
<p>整合包：<a href="https://pan.quark.cn/s/c2ded75100ac">https://pan.quark.cn/s/c2ded75100ac</a>  </p>
<p>视频教程：<a href="https://www.bilibili.com/video/BV1M94y137h4">【AI主播-功能篇】接入ChatGLM3，含整合包，看看有没有提升（</a>  </p>
<p>运行 <code>1.运行api.bat</code> ，然后配置相关信息接入本项目（聊天类型：<code>ChatGPT/闻达</code>，API地址：<code>http://localhost:8000/v1</code>，模型：<code>chatglm3-6b</code>）。  </p>
<p>!!! openai_api.py "参考"</p>
<pre><code>```python
if __name__ == "__main__":
    tokenizer = AutoTokenizer.from_pretrained("THUDM\\chatglm3-6b-int4", trust_remote_code=True)
    model = AutoModel.from_pretrained("THUDM\\chatglm3-6b-int4", trust_remote_code=True).cuda()
    # 多显卡支持，使用下面两行代替上面一行，将num_gpus改为你实际的显卡数量
    # from utils import load_model_on_gpus
    # model = load_model_on_gpus("THUDM\\chatglm3-6b-int4", num_gpus=2)
```
</code></pre>
<h4 id="ai_1">智谱AI</h4>
<p>官方：<a href="//open.bigmodel.cn/">open.bigmodel.cn</a>  </p>
<p>api key申请地址：<a href="//open.bigmodel.cn/usercenter/apikeys">open.bigmodel.cn/usercenter/apikeys</a>  </p>
<p>注意，需要在"设置"-&gt;"账号设置"中完成实名认证后，才能使用API。新账号默认赠送了18元的免费额度。  </p>
<h4 id="langchain-chatglm">langchain-ChatGLM</h4>
<p>官方仓库：<a href="//github.com/chatchat-space/langchain-ChatGLM">langchain-ChatGLM</a>  </p>
<p>个人提供的整合包：<a href="//pan.quark.cn/s/8d8904fd4b30">pan.quark.cn/s/8d8904fd4b30</a>  </p>
<p>chatglm-6b-int4模型下载(其实这个官方就行，有会员的话网盘快点)：<a href="//pan.quark.cn/s/a483e0c3e5fa">pan.quark.cn/s/a483e0c3e5fa</a>  </p>
<p>官方模型仓库：<a href="//huggingface.co/THUDM">huggingface.co/THUDM</a>  </p>
<p>配置相关信息，编辑 <code>configs</code> 文件夹下的 <code>model_config.py</code> ，模型路径需要是绝对路径，win的用户路径参考：<code>E:\\langchain-ChatGLM\\THUDM\\chatglm-6b-int4</code>  </p>
<p>修改部分参考：  </p>
<div class="highlight"><pre><span></span><code><span class="n">embedding_model_dict</span> <span class="o">=</span> <span class="p">{</span>
    <span class="s2">&quot;ernie-tiny&quot;</span><span class="p">:</span> <span class="s2">&quot;nghuyong/ernie-3.0-nano-zh&quot;</span><span class="p">,</span>
    <span class="s2">&quot;ernie-base&quot;</span><span class="p">:</span> <span class="s2">&quot;nghuyong/ernie-3.0-base-zh&quot;</span><span class="p">,</span>
    <span class="s2">&quot;text2vec-base&quot;</span><span class="p">:</span> <span class="s2">&quot;shibing624/text2vec-base-chinese&quot;</span><span class="p">,</span>
    <span class="c1"># 下一行是改的地方</span>
    <span class="s2">&quot;text2vec&quot;</span><span class="p">:</span> <span class="s2">&quot;E:</span><span class="se">\\</span><span class="s2">langchain-ChatGLM</span><span class="se">\\</span><span class="s2">GanymedeNil</span><span class="se">\\</span><span class="s2">text2vec-large-chinese&quot;</span><span class="p">,</span>
    <span class="s2">&quot;text2vec-base-multilingual&quot;</span><span class="p">:</span> <span class="s2">&quot;shibing624/text2vec-base-multilingual&quot;</span><span class="p">,</span>
    <span class="s2">&quot;text2vec-base-chinese-sentence&quot;</span><span class="p">:</span> <span class="s2">&quot;shibing624/text2vec-base-chinese-sentence&quot;</span><span class="p">,</span>
    <span class="s2">&quot;text2vec-base-chinese-paraphrase&quot;</span><span class="p">:</span> <span class="s2">&quot;shibing624/text2vec-base-chinese-paraphrase&quot;</span><span class="p">,</span>
    <span class="s2">&quot;m3e-small&quot;</span><span class="p">:</span> <span class="s2">&quot;moka-ai/m3e-small&quot;</span><span class="p">,</span>
    <span class="s2">&quot;m3e-base&quot;</span><span class="p">:</span> <span class="s2">&quot;moka-ai/m3e-base&quot;</span><span class="p">,</span>
<span class="p">}</span>


<span class="n">llm_model_dict</span> <span class="o">=</span> <span class="p">{</span>
    <span class="s2">&quot;chatglm-6b-int4-qe&quot;</span><span class="p">:</span> <span class="p">{</span>
        <span class="s2">&quot;name&quot;</span><span class="p">:</span> <span class="s2">&quot;chatglm-6b-int4-qe&quot;</span><span class="p">,</span>
        <span class="s2">&quot;pretrained_model_name&quot;</span><span class="p">:</span> <span class="s2">&quot;THUDM/chatglm-6b-int4-qe&quot;</span><span class="p">,</span>
        <span class="s2">&quot;local_model_path&quot;</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span>
        <span class="s2">&quot;provides&quot;</span><span class="p">:</span> <span class="s2">&quot;ChatGLMLLMChain&quot;</span>
    <span class="p">},</span>
    <span class="s2">&quot;chatglm-6b-int4&quot;</span><span class="p">:</span> <span class="p">{</span>
        <span class="s2">&quot;name&quot;</span><span class="p">:</span> <span class="s2">&quot;chatglm-6b-int4&quot;</span><span class="p">,</span>
        <span class="s2">&quot;pretrained_model_name&quot;</span><span class="p">:</span> <span class="s2">&quot;THUDM/chatglm-6b-int4&quot;</span><span class="p">,</span>
        <span class="c1"># 下一行是改的地方</span>
        <span class="s2">&quot;local_model_path&quot;</span><span class="p">:</span> <span class="s2">&quot;E:</span><span class="se">\\</span><span class="s2">langchain-ChatGLM</span><span class="se">\\</span><span class="s2">THUDM</span><span class="se">\\</span><span class="s2">chatglm-6b-int4&quot;</span><span class="p">,</span>
        <span class="s2">&quot;provides&quot;</span><span class="p">:</span> <span class="s2">&quot;ChatGLMLLMChain&quot;</span>
    <span class="p">},</span>


<span class="c1"># LLM 名称 改成你要用的模型name，没有的话会自动下载</span>
<span class="n">LLM_MODEL</span> <span class="o">=</span> <span class="s2">&quot;chatglm-6b-int4&quot;</span>
</code></pre></div>
<p>运行 <code>api.py</code> ，然后接入本项目。  </p>
<h4 id="chat_with_file_1">chat_with_file</h4>
<p>参考：<a href="//github.com/Ikaros-521/LangChainSummarize">LangChainSummarize</a></p>
<p>构建本地向量数据库时，如果本地电脑的配置太低，可以使用 <a href="//drive.google.com/file/d/1rbt2Yv7_pC1cmuODwmR2-1_cxFBFOfn8/view?usp=sharing">faiss_text2vec.ipynb</a> 云端解析向量数据库，拷贝回本地后再使用即可</p>
<ul>
<li>author: <a href="//github.com/HildaM/text2vec_colab">HildaM/text2vec_colab</a></li>
</ul>
<h4 id="text-generation-webui">text-generation-webui</h4>
<p>官方仓库：<a href="//github.com/oobabooga/text-generation-webui">text-generation-webui</a></p>
<p>懒人包：b站：coyude <a href="//www.bilibili.com/video/BV1tP411d7wo">AI对话 懒人包v1发布 图形化启动界面(oobabooga/text-generation-webui)可用chatglm/rwkv/vicuna</a></p>
<p>API调用demo：<a href="//github.com/oobabooga/text-generation-webui/tree/main/api-examples">api-examples</a></p>
<h4 id="_45">讯飞星火</h4>
<p>官网：<a href="//xinghuo.xfyun.cn/">xinghuo.xfyun.cn</a></p>
<p>api库（HildaM开发）：<a href="//github.com/HildaM/sparkdesk-api">sparkdesk-api</a></p>
<p>web配置获取方法：<a href="//github.com/HildaM/sparkdesk-api/tree/main/docs">sparkdesk-api/tree/main/docs</a></p>
<p>api申请：提交工单申请，工单提交页 <a href="//console.xfyun.cn/services/cbm">console.xfyun.cn/services/cbm</a></p>
<h4 id="_46">闻达</h4>
<p>官方仓库：<a href="//github.com/wenda-LLM/wenda">github.com/wenda-LLM/wenda</a></p>
<p>整合包下载：<a href="//pan.quark.cn/s/c4cb08de666e">pan.quark.cn/s/c4cb08de666e</a> 提取码：4b4R</p>
<p>接入说明：</p>
<p>启动 <code>RWKV-Runner</code> ，配置配配好，模型搞搞好，然后启动。  </p>
<p>如果遇到midi2audio等库缺失的报错，你可以选中整合包的python环境下的python.exe，进行库补装，参考命令 <code>python.exe -m pip midi2audio mido lm_dataformat GPUtil sse_starlette</code>  </p>
<p><img alt="image" src="static/images/luna-ai/258466304-2c3167ae-13ad-4f68-911b-d4262210e81d.png" /></p>
<p><img alt="闻达-接入说明" src="static/images/luna-ai/258465928-228da499-9de6-45a3-8bb3-5cc684569c00.png" /></p>
<h4 id="chatterbot">ChatterBot</h4>
<p><a href="//github.com/gunthercox/ChatterBot">官方仓库</a></p>
<p>ChatterBot 是一个开源的 Python 聊天机器人框架，使用机器学习算法（尤其是自然语言处理、文本语义分析等）来实现基于规则和语境的自动聊天系统。它可以让开发者通过简单的配置和训练，构建出各种类型的聊天机器人，包括问答机器人、任务型机器人、闲聊机器人等。</p>
<p>ChatterBot 的核心思想是：基于历史对话数据，使用机器学习和自然语言处理技术来分析和预测用户输入，然后生成响应。基于这种方法，聊天机器人的反应会更加智能、灵活、接近人类对话的方式。此外，ChatterBot 支持多种存储方式，如 JSON、SQLAlchemy、MongoDB 等，以及多种接口调用方式，如 RESTful API、WebSocket 等，方便开发者在不同场景中进行集成。</p>
<p>总的来说，ChatterBot 是一个非常强大、灵活、易用的聊天机器人框架，帮助开发者快速搭建出个性化、定制化的聊天机器人，从而提升用户体验和服务质量。  </p>
<h4 id="bard">Bard</h4>
<p>官方：<a href="//bard.google.com">bard.google.com</a></p>
<p>token获取方式：  </p>
<p>访问 <code>bard.google.com</code>，登录账号  </p>
<p>键盘F12 打开开发者工具  </p>
<p>应用程序 → Cookie → 复制 Cookie 中 __Secure-1PSID 对应的值。  </p>
<p>ps：cookie有效期较短  </p>
<h4 id="_47">文心一言</h4>
<p>官网：<a href="//yiyan.baidu.com">yiyan.baidu.com</a>  </p>
<ul>
<li>
<p>api</p>
<p>百度智能云千帆大模型平台：<a href="https://cloud.baidu.com/product/wenxinworkshop">https://cloud.baidu.com/product/wenxinworkshop</a>  </p>
<p>API文档：<a href="https://cloud.baidu.com/doc/WENXINWORKSHOP/s/jlil56u11">https://cloud.baidu.com/doc/WENXINWORKSHOP/s/jlil56u11</a>  </p>
<p><a href="https://console.bce.baidu.com/qianfan/ais/console/onlineService">在线服务</a>，购买<code>ERNIE-Bot大模型公有云在线调用服务</code>，<a href="https://console.bce.baidu.com/qianfan/ais/console/applicationConsole/application">应用接入</a> 创建应用，获取<code>API Key</code>和<code>Secret Key</code>，配置即可。</p>
</li>
<li>
<p>web</p>
<p>服务端：<a href="//github.com/zhuweiyou/yiyan-api">yiyan-api</a>  </p>
<p>下载yiyan-api源码，根据官方教程部署搭建运行即可。简述过程就是安装Node.js &gt;= 18，然后再源码项目文件夹内运行<code>npm install</code>，最后运行<code>npm start</code>即可。  </p>
<p>cookie 获取方式：</p>
<p>访问 <code>yiyan.baidu.com</code>，登录账号  </p>
<p>键盘F12 打开开发者工具  </p>
<p>找到<code>源代码</code>或者<code>Sources</code>页，右键<code>debugger</code>左侧行号, 选择 <code>never pause here</code> 或者叫做 <code>永不在此处暂停</code>, 然后再刷新页面  </p>
<p>此时就可以跳过<code>debugger</code>和重定向，然后找到<code>网络</code>或者<code>Network</code>。  </p>
<p>再随便发送一个提问，随便找个XHR请求中，查看请求头内的<code>cookie</code>对应的一长串的值，复制粘贴回GUI中保存即可。  </p>
</li>
</ul>
<h4 id="_48">通义星尘</h4>
<p>官网：<a href="https://xingchen.aliyun.com/">xingchen.aliyun.com</a>  </p>
<p>进入官网，注册账号，登录，打开<code>接口管理</code>页面，点击<code>API-KEY管理</code>，<code>创建密钥</code>，复制密钥，配置对应配置项。  </p>
<p>角色ID如何获取？ 首页点击<code>创建角色</code>，自己创建去！创建完成后，进入角色聊天页，角色头像边上有个<code>信息</code>，点进去可以看见<code>ID</code>，复制配置即可。</p>
<p>当然，还没完，现在官方还在内测，所以你创建了密钥还不能用，需要联系官方开通调用权限。联系方式见 <a href="https://xingchen.aliyun.com/xingchen/document/service_support">使用文档-服务支持</a>  </p>
<h4 id="_49">千帆大模型</h4>
<h5 id="_50">第三方库</h5>
<p>接入库，我对原库做了修改：<a href="https://github.com/Ikaros-521/WenxinWorkshop-Python-SDK">WenxinWorkshop-Python-SDK</a>  </p>
<p>百度智能云千帆大模型平台：<a href="https://cloud.baidu.com/product/wenxinworkshop">https://cloud.baidu.com/product/wenxinworkshop</a>  </p>
<p>官方API文档：<a href="https://cloud.baidu.com/doc/WENXINWORKSHOP/s/jlil56u11">https://cloud.baidu.com/doc/WENXINWORKSHOP/s/jlil56u11</a>  </p>
<p><a href="https://console.bce.baidu.com/qianfan/ais/console/onlineService">在线服务</a>，购买<code>ERNIE-Bot大模型公有云在线调用服务</code>等服务，<a href="https://console.bce.baidu.com/qianfan/ais/console/applicationConsole/application">应用接入</a> 创建应用，获取<code>API Key</code>和<code>Secret Key</code>，配置即可。  </p>
<h5 id="_51">官方库（有版本冲突，暂不启用）</h5>
<p>接入库：<a href="https://github.com/baidubce/bce-qianfan-sdk">bce-qianfan-sdk</a>  </p>
<p>使用文档：<a href="https://github.com/baidubce/bce-qianfan-sdk#readme">bce-qianfan-sdk#readme</a>  </p>
<p>在使用千帆 SDK 之前，用户需要 <a href="https://console.bce.baidu.com/iam/#/iam/accesslist">百度智能云控制台 - 安全认证</a> 页面获取 Access Key 与 Secret Key，并在 <a href="https://console.bce.baidu.com/qianfan/ais/console/applicationConsole/application">千帆控制台</a> 中创建应用，选择需要启用的服务，具体流程参见平台 <a href="https://cloud.baidu.com/doc/Reference/s/9jwvz2egb">说明文档</a>。在获得了 Access Key 与 Secret Key 后，配置好即可开始使用。  </p>
<h4 id="gemini">Gemini</h4>
<p>官方平台：<a href="https://makersuite.google.com/app">makersuite.google.com/app</a>  </p>
<p>前往 <a href="https://makersuite.google.com/app/apikey">makersuite.google.com/app/apikey</a> 创建一个API KEY，配置到项目中即可使用啦~（记得开魔法配置代理！）  </p>
<h4 id="kimi-chat">Kimi Chat</h4>
<p>Kimi官网：<a href="https://kimi.moonshot.cn/">https://kimi.moonshot.cn/</a>  </p>
<p>API申请：<a href="https://platform.moonshot.cn/console/api-keys">https://platform.moonshot.cn/console/api-keys</a>  </p>
<p>使用：<br />
1. 大语言模型选择：ChatGPT
2. 配置
    API地址：https://api.moonshot.cn/v1<br />
    API密钥：上面申请的密钥<br />
    模型：moonshot-v1-8k  </p>
<h4 id="qanything">QAnything</h4>
<p>官方仓库：<a href="https://github.com/netease-youdao/QAnything">https://github.com/netease-youdao/QAnything</a>  </p>
<h5 id="_52">在线</h5>
<p>在线官网：<a href="https://ai.youdao.com/saas/qanything/#/home">https://ai.youdao.com/saas/qanything/#/home</a>  </p>
<p>登录官方平台，完成实名认证获得免费额度，创建应用，获取应用ID和密钥：<a href="https://ai.youdao.com/console/#/app-overview">https://ai.youdao.com/console/#/app-overview</a>  </p>
<h5 id="_53">本地</h5>
<p>部署：Windows部署配合CUDA驱动、WSL2、docker，完成。主要坑点在docker加载cuda相关库上。根据官方仓库的run.sh脚本运行即可，具体报错参考issue。  </p>
<p>参考教程：<br />
<a href="https://blog.csdn.net/m0_63834988/article/details/131816239">【2023最新版】Win11: WSL（Ubuntu22.04）使用docker远程容器教程（Windows的Docker Desktop下载安装、迁移到非系统盘、配置国内镜像源、设置 WSL2）</a><br />
<a href="https://www.bilibili.com/read/cv31412472/">Windows安装网易开源QAnything打造智能客服系统</a>  </p>
<h4 id="_54">通义千问</h4>
<p>官网：<a href="//qianwen.aliyun.com/">qianwen.aliyun.com</a>   </p>
<h5 id="api_1">API类型</h5>
<p>API文档：<a href="https://help.aliyun.com/zh/dashscope/developer-reference/quick-start">https://help.aliyun.com/zh/dashscope/developer-reference/quick-start</a><br />
申请API KEY 文档（文档教程详细，我就不再赘述了）：<a href="https://help.aliyun.com/zh/dashscope/developer-reference/activate-dashscope-and-create-an-api-key">https://help.aliyun.com/zh/dashscope/developer-reference/activate-dashscope-and-create-an-api-key</a>  </p>
<h5 id="web">web类型</h5>
<p>依赖库：<a href="https://github.com/leeeduke/revTongYi">revTongYi</a>  </p>
<p>cookie 获取方式：<br />
1. 安装 <a href="//chrome.google.com/webstore/detail/cookie-editor/hlkenndednhfkekhgcdicdfddnkalmdm">Chrome</a>、<a href="//microsoftedge.microsoft.com/addons/detail/cookie-editor-plus/nbmajjcfigmlcnikhnfhhicidleefhpp">Edge</a> 或 <a href="//addons.mozilla.org/en-US/firefox/addon/cookie-editor/">Firefox</a> 上的<code>Cookies Editor</code>插件
2. 前往 <a href="//tongyi.aliyun.com/chat">https://tongyi.aliyun.com/chat</a> 并登录
3. 打开此插件，点击 Export -&gt; Export as JSON，将复制的Cookies内容保存到文件<code>cookie</code>文件夹下的<code>tongyi.json</code>  </p>
<p>ps:cookie有效期估计在6小时左右。  </p>
<h4 id="fastgpt">FastGPT</h4>
<h5 id="_55">在线</h5>
<p>官方：<a href="https://doc.fastgpt.in/">https://doc.fastgpt.in/</a>  </p>
<p><img alt="image" src="static/images/luna-ai/fastgpt-1.png" />  </p>
<p><img alt="image" src="static/images/luna-ai/fastgpt-2.png" />  </p>
<h3 id="tts">TTS</h3>
<h4 id="elevenlabs">elevenlabs</h4>
<p><a href="//beta.elevenlabs.io">elevenlabs官网</a></p>
<p><a href="//docs.elevenlabs.io/api-reference/quick-start/introduction">官方文档</a></p>
<p>不注册账号也可以使用，不过应该是有限制的（具体多少未知）。免费账号拥有每月1万字的额度。</p>
<h4 id="genshinvoicetop">genshinvoice.top</h4>
<p><a href="//genshinvoice.top">在线体验官网</a></p>
<p><a href="//github.com/Stardust-minus/vits">官方GitHub仓库</a>，内含api使用说明</p>
<p>官方视频讲解：<a href="//www.bilibili.com/video/BV1Sg4y1K7kg">【在线合成&amp;效果优化】基于VITS的米哈游全角色语音合成现已发布</a></p>
<h4 id="ttsai-labtop">tts.ai-lab.top</h4>
<p>在线体验官网: <a href="https://tts.ai-hobbyist.org/">https://tts.ai-hobbyist.org/</a></p>
<p>注册账号，登录，然后在在线合成页面，按下键盘<code>F12</code>打开开发者工具，在选择<code>Network</code>网络，随便合成一个音频，然后找到<code>vits</code>的一个请求，点进去，点击<code>负载</code>，找到<code>appid</code>和<code>token</code>，配置即可。  </p>
<h4 id="vitsvits-simple-api">VITS（vits-simple-api）</h4>
<p>emotional-vits官方仓库：<a href="//github.com/innnky/emotional-vits">emotional-vits</a>  </p>
<p>接入API：<a href="//github.com/Artrajz/vits-simple-api">vits-simple-api</a>  </p>
<p>vits-simple-api整合包下载：<a href="//github.com/Artrajz/vits-simple-api/releases">github.com/Artrajz/vits-simple-api/releases</a>  </p>
<p>个人提供的已训练好的模型：<a href="//github.com/Ikaros-521/emotional-vits/releases">github</a> ,   <a href="https://pan.xunlei.com/s/VNitDF0Y3l-qwTpE0A5Rh4DaA1?path=%2F%E5%88%86%E4%BA%AB%2FTTS%2FVITS%2F%E6%A8%A1%E5%9E%8B">迅雷云盘</a>  </p>
<p>视频教程：<a href="https://www.bilibili.com/video/BV1ku4y1R73r">【AI主播-TTS篇】新增 纯 VITS 接入，配合vits-simple-api，支持情感控制，语速调控</a> , <a href="https://www.bilibili.com/video/BV1Ph4y1A79w">【AI主播-TTS篇】新增 bert-vits2 的接入，配合vits-simple-api食用，强有力的中文TTS让你到达新高度~</a>   </p>
<p>如何白嫖huggingface上的<code>vits-simple-api</code>？ 只需要开启魔法，将<code>API地址</code>修改为项目提示的接口地址即可，例如：<code>https://artrajz-vits-simple-api.hf.space</code>  </p>
<p>vits-simple-api配置，修改 <code>config.py</code> ，参考配置如下，路径为追加的相对模型路径和配置文件路径（注意，新版本的变动，配置改到config.yml了，所以你需要直接改yml或者删除yml，修改py，然后重启）：</p>
<div class="highlight"><pre><span></span><code><span class="c1"># Fill in the model path here</span>
<span class="n">MODEL_LIST</span> <span class="o">=</span> <span class="p">[</span>
    <span class="c1"># VITS</span>
    <span class="p">[</span><span class="n">ABS_PATH</span> <span class="o">+</span> <span class="s2">&quot;/Model/ikaros/G_95500.pth&quot;</span><span class="p">,</span> <span class="n">ABS_PATH</span> <span class="o">+</span> <span class="s2">&quot;/Model/ikaros/config.json&quot;</span><span class="p">],</span>
    <span class="c1"># Bert-VITS2</span>
    <span class="p">[</span><span class="n">ABS_PATH</span> <span class="o">+</span> <span class="s2">&quot;/bert_vits2/G_0.pth&quot;</span><span class="p">,</span> <span class="n">ABS_PATH</span> <span class="o">+</span> <span class="s2">&quot;/bert_vits2/config.json&quot;</span><span class="p">],</span>
</code></pre></div>
<p>如果使用 <code>bert_vits2</code> ，需要注意 <code>vits-simple-api\bert_vits2\bert\chinese-roberta-wwm-ext-large</code> 路径下 <code>flax_model.msgpack</code> 等模型文件是否缺失，如果缺失，可以从隔壁 <code>bert_vits2</code> 整合包中拷贝进来 或者 从<code>huggingface</code>下载：<a href="//huggingface.co/hfl/chinese-roberta-wwm-ext-large/tree/main">hfl/chinese-roberta-wwm-ext-large</a> 。另外模型需要存放在 <code>bert_vits2</code> 目录里面。  </p>
<p>相关模型备份：<a href="//pan.quark.cn/s/0ec7deae974a">夸克网盘</a>  </p>
<p>另外如果运行闪退、报错  </p>
<div class="highlight"><pre><span></span><code><span class="n">Traceback</span> <span class="p">(</span><span class="n">most</span> <span class="n">recent</span> <span class="n">call</span> <span class="n">last</span><span class="p">):</span>
  <span class="n">File</span> <span class="s2">&quot;E:</span><span class="se">\v</span><span class="s2">its-simple-api</span><span class="se">\a</span><span class="s2">pp.py&quot;</span><span class="p">,</span> <span class="n">line</span> <span class="mi">49</span><span class="p">,</span> <span class="ow">in</span> <span class="o">&lt;</span><span class="n">module</span><span class="o">&gt;</span>
    <span class="n">tts</span> <span class="o">=</span> <span class="n">merge_model</span><span class="p">(</span><span class="n">app</span><span class="o">.</span><span class="n">config</span><span class="p">[</span><span class="s2">&quot;MODEL_LIST&quot;</span><span class="p">])</span>
  <span class="n">File</span> <span class="s2">&quot;E:</span><span class="se">\v</span><span class="s2">its-simple-api\utils\merge.py&quot;</span><span class="p">,</span> <span class="n">line</span> <span class="mi">117</span><span class="p">,</span> <span class="ow">in</span> <span class="n">merge_model</span>
    <span class="k">for</span> <span class="nb">id</span><span class="p">,</span> <span class="n">name</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">get_speakers</span><span class="p">()):</span>
  <span class="n">File</span> <span class="s2">&quot;E:</span><span class="se">\v</span><span class="s2">its-simple-api\utils\utils.py&quot;</span><span class="p">,</span> <span class="n">line</span> <span class="mi">29</span><span class="p">,</span> <span class="ow">in</span> <span class="fm">__getitem__</span>
    <span class="k">return</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">)</span>
<span class="ne">TypeError</span><span class="p">:</span> <span class="nb">getattr</span><span class="p">():</span> <span class="n">attribute</span> <span class="n">name</span> <span class="n">must</span> <span class="n">be</span> <span class="n">string</span>
</code></pre></div>
<p>需要修改 <code>utils\merge.py</code> 116行左右。</p>
<div class="highlight"><pre><span></span><code><span class="k">for</span> <span class="nb">id</span><span class="p">,</span> <span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">name</span><span class="p">)</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">get_speakers</span><span class="p">()</span><span class="o">.</span><span class="n">items</span><span class="p">()):</span>
<span class="c1"># for id, name in enumerate(obj.get_speakers()):</span>
</code></pre></div>
<p>如果在使用<code>bert-vits2</code>时，报错：</p>
<div class="highlight"><pre><span></span><code>error,<span class="w"> </span>ref_enc.convs.0.bias<span class="w"> </span>is<span class="w"> </span>not<span class="w"> </span><span class="k">in</span><span class="w"> </span>the<span class="w"> </span>checkpoint
error,<span class="w"> </span>ref_enc.convs.0.weight_g<span class="w"> </span>is<span class="w"> </span>not<span class="w"> </span><span class="k">in</span><span class="w"> </span>the<span class="w"> </span>checkpoint
......
</code></pre></div>
<p>解决方案参考：<a href="https://github.com/Ikaros-521/AI-Vtuber/issues/311">issues/311</a>  </p>
<p>改 <code>bert_vits2/models.py</code> 中第<code>646</code>行 <code>if n_speakers &gt; 1:</code> 修改为 <code>if n_speakers &gt;= 1:</code>  </p>
<h4 id="vits-fast-fine-tuning">VITS-fast-fine-tuning</h4>
<p>官方仓库：<a href="//github.com/Plachtaa/VITS-fast-fine-tuning">VITS-fast-fine-tuning</a>  </p>
<p>官方推理包：<a href="//github.com/Plachtaa/VITS-fast-fine-tuning/releases/tag/webui-v1.1">inference-webui-v1.1</a>  </p>
<p>个人提供的已训练好的模型：<a href="//github.com/Ikaros-521/VITS-fast-fine-tuning/releases">点我跳转</a>  </p>
<p>视频教程：<a href="//www.bilibili.com/video/BV1Lm4y1r7Pi">【AI语音合成-数据集篇#00】模型使用简单讲解，手把手演示</a> ，<a href="https://www.bilibili.com/video/BV1Tm4y1J71B">【AI主播-功能篇】TTS语音合成 VITS-Fast怎么使用？为什么没有合成语音？VITS不行吗？模型兼容吗？</a>   </p>
<p>训练用整合包（原作者整合包备份）：<a href="//pan.quark.cn/s/da52e78983da">pan.quark.cn/s/da52e78983da</a>  </p>
<p>整合包视频教程：<a href="//www.bilibili.com/video/BV1K94y1k7Bw">AI声音克隆又进化了，10分钟学会声音克隆！一键启动包发布！</a>  </p>
<p>整合包视频教程2：<a href="//www.bilibili.com/video/BV1B841197Em">【VITS一键包】本地训练独属于你的AI嘴替？训练部署AI语音合成教程</a>  </p>
<h4 id="vall-e-x">VALL-E-X</h4>
<p>官方仓库：<a href="//github.com/Plachtaa/VALL-E-X">VALL-E-X</a>  </p>
<p>个人提供的已训练好的preset预设：<a href="//github.com/Ikaros-521/VALL-E-X/releases/tag/preset">点我跳转</a>  </p>
<p>官方视频讲解：<a href="//www.bilibili.com/video/av617666708">仅需3秒音频实现声音克隆！我开源了微软的最新语音合成模型VALL-E X</a>  </p>
<p>视频教程：<a href="https://www.bilibili.com/video/BV1Zh4y1T7YU">【AI主播-功能篇】接入 VALL-E-X（整合包附赠），进行TTS，3秒声音克隆，“好用”喵hhh</a>  </p>
<p>整合包下载：<a href="//pan.quark.cn/s/b817e285ab41">pan.quark.cn/s/b817e285ab41</a>  </p>
<h4 id="openvoice">OpenVoice</h4>
<p>官方仓库：<a href="https://github.com/myshell-ai/OpenVoice">OpenVoice</a>  </p>
<p>视频教程：<a href="https://www.bilibili.com/video/BV1kK4y167WJ">OpenVoice 整合包 | 一句话快速克隆？英文可调语气？效果实测【TTS】</a></p>
<p>整合包下载：<a href="https://pan.xunlei.com/s/VNitDF0Y3l-qwTpE0A5Rh4DaA1?path=%2F%E5%88%86%E4%BA%AB%2FTTS%2FOpenVoice">迅雷云盘</a>, 
<a href="https://pan.quark.cn/s/936dcae8aba0#/list/share/56a79e143a8b4877a98a61854e07b229-AI%20Vtuber/5c251d9c745643868c0b17b7b6a0ecb6-TTS/9d6e066f2ed14ae4aef3e74cda6cd078-OpenVoice">夸克网盘</a></p>
<p>启动webui后就可以对接了，适配gradio监听端口即可。  </p>
<h4 id="gpt-sovits">GPT-SoVITS</h4>
<p>官方仓库：<a href="https://github.com/RVC-Boss/GPT-SoVITS">GPT-SoVITS</a>  </p>
<p>整合包下载：<a href="https://pan.quark.cn/s/936dcae8aba0">https://pan.quark.cn/s/936dcae8aba0</a>，<a href="https://pan.xunlei.com/s/VNitDF0Y3l-qwTpE0A5Rh4DaA1">https://pan.xunlei.com/s/VNitDF0Y3l-qwTpE0A5Rh4DaA1</a>     </p>
<p>视频教程：<a href="https://www.bilibili.com/video/BV1CJ4m1b7pR">BV1CJ4m1b7pR</a>  </p>
<p>天降之物模型分享：<a href="https://github.com/Ikaros-521/GPT-SoVITS/releases">https://github.com/Ikaros-521/GPT-SoVITS/releases</a>  </p>
<p>运行webui后，启动TTS推理，然后适配配置项即可，注意参考音频路径还有ws的端口即可，别的配置问题不大。  </p>
<h4 id="clone-voice">clone-voice</h4>
<p>官方仓库：<a href="https://github.com/jianchang512/clone-voice">clone-voice</a>  </p>
<p>整合包下载：<a href="https://pan.quark.cn/s/936dcae8aba0">https://pan.quark.cn/s/936dcae8aba0</a> ，<a href="https://pan.xunlei.com/s/VNitDF0Y3l-qwTpE0A5Rh4DaA1">https://pan.xunlei.com/s/VNitDF0Y3l-qwTpE0A5Rh4DaA1</a>   </p>
<p>视频教程：<a href="https://www.bilibili.com/video/BV17z421d7T9/">BV17z421d7T9</a>  </p>
<h4 id="azure-tts">Azure TTS</h4>
<p>官网：<a href="https://azure.microsoft.com/zh-cn/products/ai-services/text-to-speech/">https://azure.microsoft.com/zh-cn/products/ai-services/text-to-speech/</a>  </p>
<p>注册账号，领取一年免费试用额度，创建 语音转文本服务，获取 区域 和 密钥，配置后进行使用。  </p>
<h4 id="fish-speech">fish-speech</h4>
<p>官方仓库：<a href="https://github.com/fishaudio/fish-speech">fish-speech</a>  </p>
<p>官方文档：<a href="https://speech.fish.audio/inference/">https://speech.fish.audio/inference/</a>  </p>
<h3 id="_56">变声</h3>
<h4 id="ddsp-svc">DDSP-SVC</h4>
<p>官方仓库：<a href="//github.com/yxlllc/DDSP-SVC">DDSP-SVC</a>  </p>
<p>个人提供的已训练好的模型：<a href="//github.com/Ikaros-521/DDSP-SVC/releases">点我跳转</a>  </p>
<p>羽毛佬视频教程：<a href="//www.bilibili.com/video/BV1rs4y1Q7BQ">【AI翻唱/变声/整合包】有张N卡就能跑！媲美So-VITS却不吃配置，全新的DDSP-SVC 3.0训练/推理教程</a>  </p>
<p>视频教程：<a href="https://www.bilibili.com/video/BV1s8411m7rX/">【AI主播-功能篇】新增 DDSP-SVC 接入。变声选项再加一，多种选择总有一个是适合你的（</a>  </p>
<p>修改 <code>flask_api.py</code> 最后几行中的模型路径，其他配置自行调整，另外需要注意！ <code>enable_spk_id_cover</code> 改为 <code>False</code> ，即可接入。  </p>
<div class="highlight"><pre><span></span><code><span class="c1"># config和模型得同一目录。 这是我自己训练的DDSP模型，新鲜出炉</span>
<span class="n">checkpoint_path</span> <span class="o">=</span> <span class="s2">&quot;exp/combsub-test/model_68000.pt&quot;</span>
<span class="c1"># 是否使用预训练的基于声码器的增强器增强输出，但对硬件要求更高。</span>
<span class="n">use_vocoder_based_enhancer</span> <span class="o">=</span> <span class="kc">True</span>
<span class="c1"># 结合增强器使用，0为正常音域范围（最高G5)内的高音频质量，大于0则可以防止超高音破音</span>
<span class="n">enhancer_adaptive_key</span> <span class="o">=</span> <span class="mi">0</span>
<span class="c1"># f0提取器，有parselmouth, dio, harvest, crepe</span>
<span class="n">select_pitch_extractor</span> <span class="o">=</span> <span class="s1">&#39;crepe&#39;</span>
<span class="c1"># f0范围限制(Hz)</span>
<span class="n">limit_f0_min</span> <span class="o">=</span> <span class="mi">50</span>
<span class="n">limit_f0_max</span> <span class="o">=</span> <span class="mi">1100</span>
<span class="c1"># 音量响应阈值(dB)</span>
<span class="n">threhold</span> <span class="o">=</span> <span class="o">-</span><span class="mi">60</span>
<span class="c1"># 默认说话人。</span>
<span class="n">spk_id</span> <span class="o">=</span> <span class="mi">1</span>
<span class="c1"># 是否优先使用默认说话人覆盖vst传入的参数，改为False，不要覆盖！！！</span>
<span class="n">enable_spk_id_cover</span> <span class="o">=</span> <span class="kc">False</span>
</code></pre></div>
<h4 id="so-vits-svc">so-vits-svc</h4>
<p>官方仓库：<a href="//github.com/svc-develop-team/so-vits-svc">so-vits-svc</a>  </p>
<p>个人提供的已训练好的模型：<a href="//github.com/Ikaros-521/so-vits-svc/releases">点我跳转</a>  </p>
<p>视频教程：<a href="//www.bilibili.com/video/BV1k24y1F7Us">【AI歌姬】so-vits-svc 简单使用讲解 + 伊卡洛斯 模型开源</a> ， <a href="https://www.bilibili.com/video/BV1dh4y1j7hM/">【AI主播-功能篇】如何接入so-vits-svc？用什么版本？4.1版为什么会报错？运行哪个程序？在哪下载？</a>  </p>
<p>修改 <code>flask_api_full_song.py</code> 最后几行中的模型路径，运行，配置相关信息即可接入。  </p>
<div class="highlight"><pre><span></span><code><span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s1">&#39;__main__&#39;</span><span class="p">:</span>
    <span class="n">model_name</span> <span class="o">=</span> <span class="s2">&quot;logs/44k/ikaros_G_54600.pth&quot;</span> <span class="c1"># 你的模型地址</span>
    <span class="n">config_name</span> <span class="o">=</span> <span class="s2">&quot;configs/ikaros_v1.json&quot;</span>  <span class="c1"># 你的config地址</span>
    <span class="n">svc_model</span> <span class="o">=</span> <span class="n">infer_tool</span><span class="o">.</span><span class="n">Svc</span><span class="p">(</span><span class="n">model_name</span><span class="p">,</span> <span class="n">config_name</span><span class="p">)</span>
    <span class="n">app</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="n">port</span><span class="o">=</span><span class="mi">1145</span><span class="p">,</span> <span class="n">host</span><span class="o">=</span><span class="s2">&quot;0.0.0.0&quot;</span><span class="p">,</span> <span class="n">debug</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">threaded</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
</code></pre></div>
<p>注意！！！如果你是 <code>4.1</code> 版本的整合包，还需要修改 <code>flask_api_full_song.py</code> 的38行左右：<br />
改  </p>
<div class="highlight"><pre><span></span><code><span class="n">out_audio</span><span class="p">,</span> <span class="n">out_sr</span> <span class="o">=</span> <span class="n">svc_model</span><span class="o">.</span><span class="n">infer</span><span class="p">(</span><span class="n">spk</span><span class="p">,</span> <span class="n">tran</span><span class="p">,</span> <span class="n">raw_path</span><span class="p">)</span>
</code></pre></div>
<p>为</p>
<div class="highlight"><pre><span></span><code><span class="n">out_audio</span><span class="p">,</span> <span class="n">out_sr</span><span class="p">,</span> <span class="n">n_frames</span> <span class="o">=</span> <span class="n">svc_model</span><span class="o">.</span><span class="n">infer</span><span class="p">(</span><span class="n">spk</span><span class="p">,</span> <span class="n">tran</span><span class="p">,</span> <span class="n">raw_path</span><span class="p">)</span>
</code></pre></div>
<h3 id="_57">虚拟身体</h3>
<h4 id="live2d">Live2D</h4>
<p>源自：<a href="//github.com/jieran233/CyberWaifu">CyberWaifu</a></p>
<p>官方免费模型下载：<a href="//github.com/Ikaros-521/AI-Vtuber/releases/tag/live2d">releases/tag/live2d</a>  </p>
<p>官网：<a href="//www.live2d.com/zh-CHS">www.live2d.com/zh-CHS</a>  </p>
<p>第三方软件 <code>Vtube Studio</code> ，配置教程：<a href="https://www.bilibili.com/video/BV1vs4y1k71M">【AI主播】虚拟人部分方案#1 基于Vtube Studio的口型驱动</a>  </p>
<p>配合VB虚拟声卡时，如果想要让扬声器也可以听到输出的音频，可以通过 侦听 来实现，配置方法如下：</p>
<p><img alt="image" src="static/images/luna-ai/255964173-b2c0d632-c6ad-4044-892e-e809dfea8f21.png" /></p>
<h4 id="nvidia-omniverse-audio2face">NVIDIA Omniverse Audio2Face</h4>
<p>NVIDIA Omniverse下载：<a href="//www.nvidia.com/en-us/omniverse/download/">www.nvidia.com/en-us/omniverse/download/</a>  </p>
<p>Character Creator 4下载：<a href="//www.reallusion.com/character-creator/download.html">www.reallusion.com/character-creator/download.html</a>  </p>
<p>Epic下载：<a href="//store.epicgames.com/zh-CN/">store.epicgames.com/zh-CN/</a>  </p>
<p>参考教程：  </p>
<p><a href="//www.bilibili.com/video/BV1k94y147oG">【AI主播】Audio2Face + UE5，轻松实现 数字人 口型同步，主打一个简单，就是配置要求高了点</a>  </p>
<p><a href="//www.bilibili.com/video/BV1TS4y187P9">【Omniverse教程】【Audio2Face】1-仅需一个音频来源即可生成表情丰富的面部动画，也支持实时录音</a>  </p>
<p><a href="//www.bilibili.com/video/BV1wB4y1W7g4">玩转Omniverse | Reallusion Character Creator：生成角色</a>  </p>
<p><a href="//www.bilibili.com/video/BV1uG411x7we">玩转Omniverse | Reallusion Character Creator：将角色 USD 文件导入NVIDIA Omniverse</a>  </p>
<p><a href="//www.bilibili.com/video/BV1FV411375V">零代码让UE Metahuman说话的方法（使用omniverse audio2face串流至UE）</a>   </p>
<p><a href="//www.bilibili.com/video/BV1A24y1S77m">P6-UE5角色资产导入与说明!</a>  </p>
<h4 id="xuniren">xuniren</h4>
<p>xuniren官方仓库：<a href="//github.com/waityousea/xuniren">https://github.com/waityousea/xuniren</a>  </p>
<p>项目对接推荐使用我的改版：<a href="//github.com/Ikaros-521/xuniren">https://github.com/Ikaros-521/xuniren</a>  </p>
<p>半整合包（需要自行补充环境）：<a href="//pan.quark.cn/s/03db11314ca1">https://pan.quark.cn/s/03db11314ca1</a>, 需要注意的是这个项目环境十分难搭建，而且很多都需要自行编译，所以我编译的版本不一定适用于你的系统，那么你就需要自己重新编译安装了，那就是一件非常痛苦的事情，注意我的说明自行闭坑吧。  </p>
<p>使用：整合包用户启动我提供的<code>http_api运行.bat</code>脚本，普通用户自行启动<code>http_api.py</code>即可，看到服务正常监听即可。那么此时我们的AI Vtuber也需要配置对应的<code>虚拟身体</code>配置，然后运行即可。  </p>
<p>视频教程：<a href="//www.bilibili.com/video/BV1uB4y1d7o6/">BV1uB4y1d7o6</a>  </p>
<h4 id="easyaivtuber">EasyAIVtuber</h4>
<p>EasyAIVtuber官方仓库：<a href="https://github.com/Ksuriuri/EasyAIVtuber">https://github.com/Ksuriuri/EasyAIVtuber</a>  </p>
<p>参考官方文档完成部署后启动，虚拟身体选择“EasyAIVtuber”，保存运行即可对接使用。  </p>
<h4 id="_58">数字人视频播放器</h4>
<p>数字人视频播放器 官方仓库：<a href="https://github.com/Ikaros-521/digital_human_video_player">https://github.com/Ikaros-521/digital_human_video_player</a>  </p>
<p>参考官方文档完成部署后启动，虚拟身体选择“数字人视频播放器”，保存运行即可对接使用。  </p>
<h3 id="_59">翻译</h3>
<h4 id="_60">百度翻译</h4>
<p>官方文档：<a href="https://api.fanyi.baidu.com/doc/21">https://api.fanyi.baidu.com/doc/21</a>  </p>
<p>根据文档提示，注册开发者并完整认证后，申请“通用文本翻译”服务，然后在<a href="http://api.fanyi.baidu.com/manage/developer">http://api.fanyi.baidu.com/manage/developer</a>，获取<code>APP ID</code>和<code>密钥</code>，配置上即可使用。</p>
<h3 id="_61">其他</h3>
<h4 id="stable-diffusion">Stable Diffusion</h4>
<p>官方仓库：<a href="//github.com/AUTOMATIC1111/stable-diffusion-webui">stable-diffusion-webui</a>  </p>
<p>整合包：<a href="//www.bilibili.com/video/BV1iM4y1y7oA">【AI绘画】Stable Diffusion整合包v4.2发布！全新加速 解压即用 防爆显存 三分钟入门AI绘画 ☆可更新 ☆训练 ☆汉化</a></p>
<p>启动API模式，填写相关配置即可接入。  </p>
<p>视频教程：<a href="//www.bilibili.com/video/BV1tV411u79T/">BV1tV411u79T</a>  </p>
<h4 id="web_1">web字幕打印机</h4>
<p>项目地址：<a href="//github.com/Ikaros-521/captions_printer">captions_printer</a>  </p>
<p>具体使用参考项目文档即可。  </p>
<p>视频教程：<a href="//www.bilibili.com/video/BV13h4y1e7z8/">BV13h4y1e7z8</a>  </p>
<h4 id="_62">按键映射</h4>
<p>pyautogui官方文档：<a href="//pyautogui.readthedocs.io/en/latest/keyboard.html#keyboard-keys">传送门，官方对按键名的定义</a>  </p>
<h4 id="audio-player">audio player（音频播放器）</h4>
<p>项目地址：<a href="//github.com/Ikaros-521/audio_player">audio_player</a>  </p>
<p>具体使用参考项目文档即可。  </p>
<h2 id="_63">🀅开发&amp;项目相关</h2>
<h3 id="_64">简易流程图</h3>
<p><img alt="image" src="static/images/luna-ai/simple_flowchart.png" /></p>
<p><img alt="image" src="static/images/luna-ai/chart.jpg" /></p>
<details class="详情展开">
<summary>详情展开</summary>
<h3 id="ui">UI设计</h3>
<h4 id="nicegui">NiceGUI</h4>
<p>webui使用的NiceGUI框架搭建，官方文档：<a href="//nicegui.io/documentation">https://nicegui.io/documentation</a>  </p>
<h4 id="pyqt5">PyQt5</h4>
<p>打开QT设计师~o( =∩ω∩= )m <code>pyqt5-tools designer</code>  </p>
<p>生成UI代码 <code>pyuic5 -o UI_main.py ui\main.ui</code>  </p>
<p>对UI做改动时，加入新的配置，一般需要修改 init_config 和 save 部分，新配置的读取和写入部分。  </p>
<h3 id="_65">源码开发</h3>
<h4 id="llm_1">新增LLM</h4>
<p>1.<code>utils/gpt_model</code> 下新建 新llm的py文件，内部封装类，实现通用函数 <code>get_resp(prompt)</code> ，传入提问，返回回答。</p>
<p>2.<code>utils/gpt_model</code> 下新增下模型相关的配置内容，照葫芦画瓢 <code>gpt.py</code></p>
<p>3.根据相关传参，给 <code>config.json</code> 添加对应的配置。</p>
<p>4.<code>utils</code>下，修改 <code>my_handle.py</code> ， <code>__init__</code> 初始化中相关配置读取，加载模型等。</p>
<p>5.<code>utils</code>下，修改 <code>my_handle.py</code> ， <code>comment_handle</code> 中新增对应LLM选中时，所做的逻辑处理。</p>
<p>6.打开QT设计师，修改 <code>ui\main.ui</code> 。为新的LLM设计位置和相应控件，可以参考其他LLM的设计。</p>
<p>7.修改 <code>main.py</code> ，实现LLM的UI显示部分以及数据读取和配置保存。另外需要注意新增的LLM会影响到其他配置项的内容，以及显隐关系。需要修改的部分如下：</p>
<ul>
<li>init_config()</li>
<li>init_ui()</li>
<li>oncomboBox_chat_type_IndexChanged()</li>
</ul>
<h3 id="_66">打包懒人包</h3>
<p>1、直接在懒人包中安装miniconda  </p>
<p>2、激活base虚拟环境（使用写好的激活脚本）  </p>
<p>3、安装依赖  </p>
<p><code>pip install -r requirements_bilibili.txt -i https://pypi.tuna.tsinghua.edu.cn/simple</code>  </p>
<p><code>pip install -r requirements_dy.txt -i https://pypi.tuna.tsinghua.edu.cn/simple</code>  </p>
<p><code>pip install -r requirements_ks.txt -i https://pypi.tuna.tsinghua.edu.cn/simple</code>  </p>
<p><code>pip install -r requirements_douyu.txt -i https://pypi.tuna.tsinghua.edu.cn/simple</code>  </p>
<p>4、安装chatterbot（可选）</p>
<p><code>pip install spacy SQLAlchemy==1.3.24 -i https://pypi.tuna.tsinghua.edu.cn/simple</code>  </p>
<p>前提是你在当前目录下有clone chatterbot的项目（自行调整路径关系）  </p>
<p><code>python setup.py install</code>  </p>
<h3 id="md">MD目录自动生成</h3>
<p><a href="//github.com/thlorenz/doctoc">doctoc</a> ,在本地git存储库中生成降价文件的目录。链接通过命令行标志兼容github或其他网站生成的锚。</p>
<h4 id="_67">安装</h4>
<p>node.js环境  </p>
<p>进入包含本地git项目的目录，键入: <code>npm install -g doctoc</code>  </p>
<h4 id="_68">使用</h4>
<p>在 <code>README.md</code> 中，找个生成目录位置，写入如下代码，确认生成位置：</p>
<div class="highlight"><pre><span></span><code>&lt;!-- START doctoc --&gt;
&lt;!-- END doctoc --&gt;
</code></pre></div>
<p>cmd输入命令即可：<code>doctoc /path/to/file</code>  </p>
<p>例如：<code>doctoc README.md</code>  </p>
<h3 id="_69">文档生成</h3>
<p>基于编写 <code>mkdocs-material</code>，官方文档：<a href="//squidfunk.github.io/mkdocs-material/getting-started/">mkdocs-material</a>  </p>
<p>安装 <code>pip install mkdocs-material</code>  </p>
<p>构建静态网站 <code>mkdocs build</code>  </p>
<p>文档本地实时预览 <code>mkdocs serve</code>  </p>
<h3 id="_70">文档生成(简易旧版)</h3>
<p>依赖 <a href="//nodejs.org">node.js</a> 环境。  </p>
<h4 id="docsify-cli">安装docsify-cli工具</h4>
<p>cmd运行 <code>npm i docsify-cli -g</code>  </p>
<h4 id="_71">初始化项目</h4>
<p>项目根目录cmd运行 <code>docsify init .</code>  </p>
<h4 id="_72">启动服务</h4>
<p>项目根目录cmd运行 <code>docsify serve .</code>  </p>
</details>
<h3 id="_73">测试</h3>
<ul class="task-list">
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled checked/><span class="task-list-indicator"></span></label> GUI运行配置完后，运行，监听无人直播间半天，时间到后发送命令尝试触发应用（复读机），正常监听并合成音频。</li>
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled checked/><span class="task-list-indicator"></span></label> 监听1秒2弹幕的直播间，复读机配合vits-fast做语音合成，持续工作30分钟，正常监听并合成音频。</li>
</ul>
<h2 id="_74">🖹待办事项</h2>
<ul class="task-list">
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled checked/><span class="task-list-indicator"></span></label> chatglm拥有记忆功能</li>
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled checked/><span class="task-list-indicator"></span></label> 抖音关注事件可以触发关注感谢话术</li>
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled checked/><span class="task-list-indicator"></span></label> 本地问答文本库支持动态变量功能</li>
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled checked/><span class="task-list-indicator"></span></label> 兼容bert vits2</li>
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled checked/><span class="task-list-indicator"></span></label> LLM输出后，后置的过滤（双重过滤）</li>
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled checked/><span class="task-list-indicator"></span></label> bark-gui的接入</li>
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled checked/><span class="task-list-indicator"></span></label> 快手平台的重新兼容</li>
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled checked/><span class="task-list-indicator"></span></label> 用户入场、投食感谢（自定义 文案）</li>
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled checked/><span class="task-list-indicator"></span></label> 弹幕跳过机制（时间段内丢弃）</li>
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled checked/><span class="task-list-indicator"></span></label> 点歌后的弹幕触发问题（如：只取最新的几个）—— 使用弹幕丢弃机制</li>
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled checked/><span class="task-list-indicator"></span></label> 弹幕丢失bug修复（很可能是线程sleep造成的）&amp; b站弹幕库版本更新</li>
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled checked/><span class="task-list-indicator"></span></label> 文案页支持动态加载文案</li>
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled checked/><span class="task-list-indicator"></span></label> 支持关闭聊天（LLM等）</li>
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled checked/><span class="task-list-indicator"></span></label> langchain-chatglm的接入</li>
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled checked/><span class="task-list-indicator"></span></label> chat_with_file在匹配不到结果时继续使用LLM进行回答——通过prompt实现</li>
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled/><span class="task-list-indicator"></span></label> 文案字幕显示</li>
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled/><span class="task-list-indicator"></span></label> 礼物答谢combo情况下的重复答谢问题</li>
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled/><span class="task-list-indicator"></span></label> 懒人包优化</li>
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled/><span class="task-list-indicator"></span></label> 接入更多的LLM（new bing等）</li>
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled/><span class="task-list-indicator"></span></label> 接入更多的TTS方案</li>
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled/><span class="task-list-indicator"></span></label> RVC的接入</li>
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled/><span class="task-list-indicator"></span></label> 其他直播平台的适配（拼多多等）</li>
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled/><span class="task-list-indicator"></span></label> live2d的嘴型、动作匹配</li>
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled/><span class="task-list-indicator"></span></label> 接入更多的2/3D模型软件（Unity、UE5等）</li>
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled/><span class="task-list-indicator"></span></label> 屏蔽词升级。如：可以根据屏蔽词库转拼音的二重屏蔽；接入第三方屏蔽词API等</li>
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled checked/><span class="task-list-indicator"></span></label> 本机语音直接交流模式（本地版本whisper，其他方式）</li>
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled/><span class="task-list-indicator"></span></label> 本地的用户拉黑机制</li>
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled/><span class="task-list-indicator"></span></label> 礼物互动机制（跳舞，唱歌）</li>
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled/><span class="task-list-indicator"></span></label> wav2lip方案尝试（带货方面）</li>
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled/><span class="task-list-indicator"></span></label> 直播中可以由弹幕进行动态换装 </li>
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled/><span class="task-list-indicator"></span></label> TTS合成时，语句切分算法有待优化</li>
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled/><span class="task-list-indicator"></span></label> 压力测试</li>
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled/><span class="task-list-indicator"></span></label> 文案拒绝打断机制</li>
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled/><span class="task-list-indicator"></span></label> Edge-TTS在合成音频时会出现合成成功但是系统找不到文件的bug</li>
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled/><span class="task-list-indicator"></span></label> 支持礼物或者其他形式的键盘映射</li>
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled checked/><span class="task-list-indicator"></span></label> webui开发</li>
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled checked/><span class="task-list-indicator"></span></label> 闲时任务功能（适用于自言自语）</li>
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled checked/><span class="task-list-indicator"></span></label> 输出音频自定义输出设备</li>
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled/><span class="task-list-indicator"></span></label> 独立TTS功能</li>
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled/><span class="task-list-indicator"></span></label> 独立文案合成功能</li>
</ul>
<h2 id="_75">📝更新日志</h2>
<details class="note">
<summary>更新日志</summary>
<ul>
<li>
<p>2024-3-13</p>
<ul>
<li>对接fish-speech</li>
</ul>
</li>
<li>
<p>2024-3-9</p>
<ul>
<li>username大一统 将会迎来巨大的危机，请各位更新的幸运儿留意</li>
<li>claude配置页 合并2个板块</li>
</ul>
</li>
<li>
<p>2024-3-8</p>
<ul>
<li>支持讯飞星火v3.5 和 助手API</li>
</ul>
</li>
<li>
<p>2024-3-6</p>
<ul>
<li>新增 虚拟身体 数字人视频播放器</li>
</ul>
</li>
<li>
<p>2024-3-4</p>
<ul>
<li>修复本地问答下 用户名变成助播的bug</li>
</ul>
</li>
<li>
<p>2024-3-3</p>
<ul>
<li>优化数据分析 页面运转 数据库不存在的异常提示</li>
<li>修改qwen-alice为qwen，适配qwen官方库openai_api接口</li>
<li>修复 文本转语音页面 通用的测试音频合成 gpt-sovits无法合成测试音频的bug</li>
</ul>
</li>
<li>
<p>2024-3-2</p>
<ul>
<li>通义千问 补充大模型常用配置项 和 联网搜索功能</li>
</ul>
</li>
<li>
<p>2024-3-1</p>
<ul>
<li>新增 通义千问官方API的调用；恢复 web类型下 通义千问 白嫖调用</li>
</ul>
</li>
<li>
<p>2024-2-29</p>
<ul>
<li>对接EasyAIVtuber</li>
<li>main程序在聊天模式下 主线程运行完没有等待子线程运行导致的edge-tts运行问题修复</li>
</ul>
</li>
<li>
<p>2024-2-28</p>
<ul>
<li>删除PyQT相关源码</li>
<li>智谱AI新增 应用 功能的对接</li>
<li>动态文案 前端新增文案组添加删除功能，新增LLM类型，可以指定动态文案选用的LLM</li>
</ul>
</li>
<li>
<p>2024-2-27</p>
<ul>
<li>补充动态文案和闲时任务默认数据</li>
</ul>
</li>
<li>
<p>2024-2-26</p>
<ul>
<li>对接 koboldcpp</li>
</ul>
</li>
<li>
<p>2024-2-25</p>
<ul>
<li>对接 Azure TTS</li>
</ul>
</li>
<li>
<p>2024-2-24</p>
<ul>
<li>合并各平台到单程序，减低冗余</li>
<li>聊天页 新增 播放中不录音的配置，方便在本地做AI客服等场景应用时避免循环录音错误问题</li>
<li>新增配置项 弹幕模板，可以在发送给LLM前对弹幕内容进行包装，如携带用户名等</li>
</ul>
</li>
<li>
<p>2024-2-23</p>
<ul>
<li>接入 在线版qanything</li>
<li>audio修改成员变量到类变量（后期应用使用</li>
</ul>
</li>
<li>
<p>2024-2-19</p>
<ul>
<li>对接 QAnything</li>
</ul>
</li>
<li>
<p>2024-2-17</p>
<ul>
<li>对接Kimi Chat（复用ChatGPT类型，具体使用参考上方文档）</li>
</ul>
</li>
<li>
<p>2024-2-14</p>
<ul>
<li>按键映射功能改为按键/文案映射，其中新增了按键触发、文案触发控制，可以实现关键词或礼物触发对应文案（比如：用户打赏了一个 辣条，那么在 文案触发类型 包含了 礼物 的情况下，会在对应文案中随机一个文案合成音频进行播放，此外这个文案也支持动态变量）</li>
</ul>
</li>
<li>
<p>2024-2-13</p>
<ul>
<li>修改so-vits-svc和ddsp-svc音频输出路径为绝对路径</li>
</ul>
</li>
<li>
<p>2024-2-11</p>
<ul>
<li>文档新增一个vercel的备份</li>
<li>助播模式新增语音合成配置，可以自定义文本匹配后用的语音合成类型，从而区分助播和主播的声音</li>
<li>文案页-文案音频合成新增语音合成类型选择，可以自定义TTS进行合成，不需要保存就可以切换</li>
</ul>
</li>
<li>
<p>2024-2-9</p>
<ul>
<li>接入clone-voice</li>
</ul>
</li>
<li>
<p>2024-2-7</p>
<ul>
<li>平台新增 TikTok 的接入，目前支持数据类型：弹幕、礼物、入场。</li>
</ul>
</li>
<li>
<p>2024-2-4</p>
<ul>
<li>新增 数据分析 页面，统计分析最热弹幕词云、积分榜单、礼物榜单</li>
<li>webui右下角新增返回顶部按钮</li>
<li>webui优化文档和关于</li>
<li>抖音平台融合聊天模式</li>
<li>抖音平台 在没有启动监听程序的情况下 优化提示日志，并不结束程序，用户可以通过webui重启</li>
</ul>
</li>
<li>
<p>2024-2-3</p>
<ul>
<li>gpt-sovits对接CyberWon的WebTTS版的API</li>
</ul>
</li>
<li>
<p>2024-2-2</p>
<ul>
<li>智谱新增glm3-turbo和glm4的接入</li>
<li>gpt-sovits新增官方api对接，更加方便高效</li>
</ul>
</li>
<li>
<p>2024-2-1</p>
<ul>
<li>webui 文案页 文案音频合成新增合成后音频在页面试听和删除的功能</li>
<li>本地问答库-json新增积分的回答内容</li>
</ul>
</li>
<li>
<p>2024-1-31</p>
<ul>
<li>webui实现板块显影功能</li>
<li>Live2D移到虚拟身体，新增模型名配置，可以自动检索模型名，进行模型加载</li>
</ul>
</li>
<li>
<p>2024-1-29</p>
<ul>
<li>优化翻译前原文字幕的保存实现</li>
<li>页面配置新增 板块显影配置（实际显影功能还未实现，待推进，后续可能做成显示+功能开关）</li>
</ul>
</li>
<li>
<p>2024-1-27</p>
<ul>
<li>优化文案播放逻辑，文案播放过程中进行播放列表索引值记录，在被打断时，会从被打断的播放列表恢复播放（待大数据测试</li>
<li>优化日志输出</li>
<li>平台：哔哩哔哩2 融合聊天模式，可以变监听直播间，边监听按键触发语音聊天（待大规模测试</li>
</ul>
</li>
<li>
<p>2024-1-26</p>
<ul>
<li>优化webui排版</li>
<li>补充原文字幕的配置项</li>
<li>新增谷歌翻译，接入通用翻译和SD翻译</li>
</ul>
</li>
<li>
<p>2024-1-25</p>
<ul>
<li>聊天类型新增 alice（群友定制）</li>
<li>延长聊天页 按键监听时长为0.5s，降低误触概率</li>
</ul>
</li>
<li>
<p>2024-1-23</p>
<ul>
<li>文案页 新增 文案文本加载相关的功能，合成功能开发中</li>
<li>过滤新增表情弹幕过滤，就是[]包裹的内容</li>
<li>优化日志输出</li>
<li>SD板块新增翻译功能，源自翻译页配置，暂时仅有百度翻译。</li>
</ul>
</li>
<li>
<p>2024-1-22</p>
<ul>
<li>按键映射 新增 礼物映射按键，可玩性增加</li>
</ul>
</li>
<li>
<p>2024-1-21</p>
<ul>
<li>聊天页 新增 复读音频插队，配合audio_player_v2可以使用</li>
</ul>
</li>
<li>
<p>2024-1-18</p>
<ul>
<li>修复GPT-SoVITS参考语言配置项的bug</li>
<li>违禁词过滤新增违禁开关、违禁丢弃、违禁替换等功能</li>
<li>修复动态文案无法使用的bug</li>
</ul>
</li>
<li>
<p>2024-1-17</p>
<ul>
<li>新增对接OpenVoice时gradio的配置参考</li>
<li>更新思维导图</li>
<li>聊天模式新增 按键监听开关</li>
<li>TTS新增GPT_SoVITS的接入</li>
</ul>
</li>
<li>
<p>2024-1-16</p>
<ul>
<li>新增音频播放器选项 audio_player_v2，对接新版播放器功能，具体参考对应项目更新日志</li>
<li>删减违禁词</li>
</ul>
</li>
<li>
<p>2024-1-12</p>
<ul>
<li>兼容新版的langchain_chatchat</li>
<li>本地问答新增配置项 最大用户名长度，用于自定义限制</li>
</ul>
</li>
<li>
<p>2024-1-11</p>
<ul>
<li>chatgpt配置新增测试按钮，可以测试当前配置是否正确</li>
<li>删减违禁词</li>
</ul>
</li>
<li>
<p>2024-1-10</p>
<ul>
<li>SD追加虚拟摄像头创建的日志输出，方便用户使用</li>
</ul>
</li>
<li>
<p>2024-1-8</p>
<ul>
<li>SD新增保存图片到本地相关功能，优化其UI布局</li>
</ul>
</li>
<li>
<p>2024-1-8</p>
<ul>
<li>聊天模式 新增 faster_whisper的接入，即可不使用魔法，不用花钱，本地进行语音转文本；聊天页 增加部分新配置方便自定义 </li>
<li>删除torch相关的库，请手动安装 </li>
<li>助播内容不再触发念用户名功能（脑测没bug） </li>
<li>修复SD加载LLM异常的bug </li>
</ul>
</li>
<li>
<p>2024-1-7</p>
<ul>
<li>修复积分页UI错误问题</li>
<li>修改默认配置，关闭所有异常报警</li>
<li>异常报警计数改到函数内部计数，提高逻辑性</li>
</ul>
</li>
<li>
<p>2024-1-6</p>
<ul>
<li>闲时任务日志输出优化</li>
<li>text-gen新增官方api的对接并新增传参top_p、top_k、温度、seed</li>
</ul>
</li>
<li>
<p>2024-1-4</p>
<ul>
<li>完成 答谢板块 随机文案的开关功能</li>
<li>聊天页新增调教功能，用于在直播中动态调教LLM而不进行TTS合成</li>
<li>页面配置 新增 自动运行 功能。启用后，启动webui后会直接根据当前配置运行。</li>
<li>异常报警新增 开始报警错误数、自动重启错误数的配置项，优化报警逻辑。其中自动重启配合“自动运行”使用，以便在部分功能出错时，可以重启自修复。</li>
</ul>
</li>
<li>
<p>2024-1-3</p>
<ul>
<li>SD配置项补充其他LLM</li>
<li>新增答谢板块的随机开关（后端未实现）</li>
<li>删减违禁词</li>
</ul>
</li>
<li>
<p>2024-1-2</p>
<ul>
<li>新增最大用户名长度，在主要应用的版本实现此功能，防止有的用户名过长，影响观感</li>
<li>新增普通音频播放时间间隔配置项（如果你感觉音频和音频之间太快或太慢，可以自行调节间隔时间）</li>
</ul>
</li>
<li>
<p>2023-12-31</p>
<ul>
<li>点歌模式新增相似度配置项，优化文件搜索函数，不被拓展名干扰</li>
<li>webui新增webui配置（IP、端口、标题）</li>
</ul>
</li>
<li>
<p>2023-12-30</p>
<ul>
<li>助播模式 音频匹配新增 匹配算法选项，提供可用性</li>
<li>优化整理了部分代码</li>
<li>助播模式 新增类型自定义选择，可以选择那些数据会触发助播，增加可用性</li>
<li>修复红血球佬的在线tts调用失败问题（ssl禁用）</li>
</ul>
</li>
<li>
<p>2023-12-29</p>
<ul>
<li>针对文案内容被弹幕打断后顺序会错乱问题进行了修改，改为打断后恢复会重载整个数据列表，仍有大量的问题，暂时凑合</li>
</ul>
</li>
<li>
<p>2023-12-28</p>
<ul>
<li>优化chatgpt的测试程序</li>
<li>webui实现异常报警功能</li>
<li>修复闲时任务随机列表无法关闭的bug</li>
<li>text-gen新增类型配置，默认为coyude</li>
<li>修改LLM函数统一为get_resp</li>
<li>删减违禁词</li>
</ul>
</li>
<li>
<p>2023-12-27</p>
<ul>
<li>优化chatgpt返回内容</li>
<li>异常报警新增llm，平台，svc的后端实现</li>
<li>补充异常报警语音</li>
</ul>
</li>
<li>
<p>2023-12-26</p>
<ul>
<li>修复b站2 开放平台 appid数据类型错误问题</li>
<li>修改日志INFO等级颜色为白色，自定义请修改logger.py</li>
<li>webui尝试实现api接口，还在功能尝试中，请勿调用</li>
<li>异常报警 新增 平台异常、TTS异常的后端实现</li>
</ul>
</li>
<li>
<p>2023-12-25</p>
<ul>
<li>给log增加颜色，看日志舒服了</li>
<li>新增 助播模式（需要注意的是此功能的本地问答-文本 情况下语音区分暂未实现） </li>
<li>优化音频播放逻辑，之前哪些直接插队的本地音频将会老实排队，等前面文本先合成 </li>
<li>新增配置检测函数，用于防止用户瞎配置导致无法使用（暂时只开了个头，后续推进功能实现）</li>
</ul>
</li>
<li>
<p>2023-12-24</p>
<ul>
<li>新增bert-vits2 v2.3 hiyori UI的API对接</li>
<li>优化tts部分代码实现（有点小改动，可能有bug，待测） </li>
</ul>
</li>
<li>
<p>2023-12-23</p>
<ul>
<li>更新多个gpt3.5的模型 </li>
<li>过滤新增 弹幕过滤前后缀，用于直播间直接聊天而不触发LLM；</li>
<li>删减违禁词 </li>
</ul>
</li>
<li>
<p>2023-12-21</p>
<ul>
<li>TTS新增gradio模式，用于直接配置传参等信息，来适应绝大多数的有gradio接口的tts项目</li>
<li>接入 微信视频号（暂时只有弹幕和入场数据）</li>
</ul>
</li>
<li>
<p>2023-12-18</p>
<ul>
<li>新增 谷歌 Gemini 的接入</li>
<li>新增docker（但暂时并不适用）</li>
</ul>
</li>
<li>
<p>2023-12-17</p>
<ul>
<li>新增 极地极光、曲奇饼干 UI配色</li>
<li>修复api 聊天模式相关bug</li>
<li>新增按键UI设置</li>
<li>补充“关于”说明</li>
</ul>
</li>
<li>
<p>2023-12-16</p>
<ul>
<li>新增API程序，第三方可以通过api控制程序运行、配置修改、直播数据发送等，后续系统全部功能皆可通过api进行操作</li>
</ul>
</li>
<li>
<p>2023-12-15</p>
<ul>
<li>新增 千帆大模型的接入；</li>
<li>对llm相关源码加载和逻辑处理做了大优化，可能有bug，待测试</li>
</ul>
</li>
<li>
<p>2023-12-13</p>
<ul>
<li>接入 千帆大模型（有版本冲突，暂不启用）</li>
<li>elevenlabs升级到0.2.8，可以继续正常使用。一定要注意pydantic的版本，不能高于2.0</li>
</ul>
</li>
<li>
<p>2023-12-12</p>
<ul>
<li>通用配置-音频播放 新增 文本切分启用开关，关闭可以语句一次性合成（TTS吃得消的情况下）</li>
</ul>
</li>
<li>
<p>2023-12-9</p>
<ul>
<li>补充遗漏依赖</li>
<li>依赖文件统一为一个</li>
<li>优化通义千问报错日志</li>
<li>增加了恢复出厂的功能，但隐藏了按钮</li>
<li>新增 动态配置功能，暂时仅针对抖音，可以根据在线人数动态切换配置内容实现改话术、配音等功能（大改动！可能有很大的bug）</li>
<li>聊天模式 新增自定义声卡输入，可以用于实现直播连麦互动效果</li>
</ul>
</li>
<li>
<p>2023-12-8</p>
<ul>
<li>删减违禁词</li>
<li>接入 通义星尘（固定角色）</li>
<li>答谢模块 文案部分改为多行文案随机获取</li>
</ul>
</li>
<li>
<p>2023-12-3</p>
<ul>
<li>优化线程启动实现，功能没启用不启动线程</li>
<li>恢复聊天模式 翻译配置热加载，优化代码实现</li>
<li>text_generation_webui支持上下文记忆</li>
</ul>
</li>
<li>
<p>2023-12-1</p>
<ul>
<li>智谱AI 新增chatglm_turbo</li>
<li>恢复tts.ai-lab.top的兼容，新使用方法参考文档说明</li>
<li>优化tts、webui代码</li>
</ul>
</li>
<li>
<p>2023-11-29</p>
<ul>
<li>文案页 支持增删文案组</li>
<li>talk 后移线程到麦克风监听后，规避麦克风监听异常的bug</li>
<li>优化tts异常日志</li>
</ul>
</li>
<li>
<p>2023-11-28</p>
<ul>
<li>聊天模式 补充动态文案、定时任务、闲时任务的触发功能 </li>
</ul>
</li>
<li>
<p>2023-11-27</p>
<ul>
<li>聊天模式 支持动态修改语音识别相关配置，从而实现多语言识别；config类删除单例（待测试）</li>
</ul>
</li>
<li>
<p>2023-11-26</p>
<ul>
<li>升级备份脚本，补充遗漏的out文件夹，改备份为强制覆盖</li>
<li>优化talk部分源码</li>
<li>tts请求新增请求超时，默认60s</li>
<li>接入langchain_chatchat</li>
<li>chatgpt兼容0.x.x和1.x.x版本</li>
<li>接入文心一言官方API</li>
</ul>
</li>
<li>
<p>2023-11-22</p>
<ul>
<li>修复webui 智谱AI部分配置无法保存的bug</li>
<li>点歌模式命令改为多命令形式</li>
</ul>
</li>
<li>
<p>2023-11-21</p>
<ul>
<li>新增备份配置和数据脚本，懒人包脚本位于Scripts文件夹内</li>
</ul>
</li>
<li>
<p>2023-11-20</p>
<ul>
<li>补充遗漏的依赖</li>
<li>修复talk遗漏的全局变量</li>
</ul>
</li>
<li>
<p>2023-11-19</p>
<ul>
<li>chatgpt增加请求超时时间，默认30s</li>
<li>修复按键映射描述错误问题</li>
<li>平台程序新增flask，创建http接口，修改webui的聊天页文本框为http请求对接的形式，修复了聊天页发送内容实例化2次My_handle类造成双重音频的问题</li>
</ul>
</li>
<li>
<p>2023-11-18</p>
<ul>
<li>优化webui配置项描述</li>
<li>按键映射改为实际使用情况下的配置情况</li>
<li>webui补充遗漏的内置Live2D启动功能</li>
<li>修复webui 聊天页 直接复读无法使用的bug</li>
</ul>
</li>
<li>
<p>2023-11-17</p>
<ul>
<li>unity对接新增密码</li>
<li>着手开发异常报警功能</li>
<li>修复webui 过滤配置 文字描述错误问题</li>
<li>修复webui 睿声AI配置项描述错误问题</li>
</ul>
</li>
<li>
<p>2023-11-16</p>
<ul>
<li>更新logo</li>
<li>修复pyqt b站配置项错误问题</li>
<li>webui 文档页直接内嵌在线文档，方便用户直接查看</li>
<li>webui补充遗漏的 点歌模式 配置</li>
<li>紧急关闭webui公网访问</li>
<li>修复 webui 聊天页 直接复读 bug</li>
</ul>
</li>
<li>
<p>2023-11-15</p>
<ul>
<li>修复百度翻译配置读取错误问题</li>
<li>接入 睿声AI（新的在线TTS）</li>
<li>webui 页面配置 新增 账号管理配置，可以自定义是否启用登录功能、修改账号密码</li>
</ul>
</li>
<li>
<p>2023-11-14</p>
<ul>
<li>禁用文案的自动播放</li>
<li>gpt新增gpt-4-1106-preview</li>
<li>哔哩哔哩方案2新增开放平台对接，使用官方API进行监听，应该是最稳定方案了</li>
<li>音频合成后的路径统一为绝对路径，稳妥点</li>
<li>不在对PyQt进行兼容！！！</li>
<li>新增翻译功能，暂时接入百度翻译API，可以配置弹幕或回复内容翻译</li>
</ul>
</li>
<li>
<p>2023-11-13</p>
<ul>
<li>新增 unity第三方项目对接，将LLM等响应数据传给HTTP中转站（可以用于对接其他项目使用）</li>
<li>恢复genshinvoice的API调用</li>
<li>移动unity对接的启用方式到 虚拟身体 配置项</li>
<li>修复vits不能切换类型的bug</li>
<li>默认不启用webui的登录功能</li>
</ul>
</li>
<li>
<p>2023-11-12</p>
<ul>
<li>修复webui闲时任务日志bug</li>
<li>webui重启前先停止程序</li>
<li>文案机制增加自动播放功能，至此，webui开发已完全覆盖pyqt，开始推进废弃pyqt计划</li>
</ul>
</li>
<li>
<p>2023-11-11</p>
<ul>
<li>twitch增加重连机制和多次失败停止运行机制</li>
<li>gpt默认token提升到4096</li>
<li>webui使用linux兼容路径语法</li>
<li>bilibili2 cookie问题bug修复</li>
<li>优化闲时任务日志输出内容</li>
</ul>
</li>
<li>
<p>2023-11-10</p>
<ul>
<li>补充GUI遗漏的OpenAI TTS配置</li>
<li>补充遗漏的依赖</li>
<li>webui新增 页面配置页，暂时支持设置UI主题</li>
<li>优化webui提示框</li>
<li>TTS新增tts.ai-lab.top的接入（webui已适配）</li>
</ul>
</li>
<li>
<p>2023-11-09</p>
<ul>
<li>对闲时任务的闲时时间强制转型为int</li>
<li>新增OpenAI TTS接入</li>
<li>删减违禁词</li>
</ul>
</li>
<li>
<p>2023-11-07</p>
<ul>
<li>新增纯特殊字符和空格组成的文本的合成过滤，避免tts合成错误音频</li>
<li>文案页 文案合成 vits传参补充遗漏的sdp_radio</li>
<li>删减违禁词</li>
<li>优化chatgpt特殊情况下token一直超长问题,2次都超长，直接清空上下文</li>
<li>增加伊卡洛斯本地问答数据</li>
<li>新增闲时任务功能</li>
<li>闲时任务-本地音频 传递的内容改为文件名，而非完整路径</li>
<li>修复文案页-tts用vits时，无法合成文案音频的bug</li>
</ul>
</li>
<li>
<p>2023-11-06</p>
<ul>
<li>修复audio_player模式下，取消点歌失效的bug</li>
<li>通义千问不再适用</li>
</ul>
</li>
<li>
<p>2023-11-03</p>
<ul>
<li>修改点歌模式发送路径为绝对路径</li>
</ul>
</li>
<li>
<p>2023-11-02</p>
<ul>
<li>audio_player类到单独文件中，补充audio_player接口的调用函数</li>
</ul>
</li>
<li>
<p>2023-11-01</p>
<ul>
<li>讯飞星火新增版本配置项，用于选择具体API调用版本</li>
<li>删减违禁词</li>
<li>新增audio_player的对接，内测阶段，bug较多，不建议使用</li>
</ul>
</li>
<li>
<p>2023-10-31</p>
<ul>
<li>升级星火库到1.5.0</li>
<li>修订违禁词</li>
<li>按键映射新增配置项 类型，可支持弹幕或回复触发</li>
<li>按键映射 回复类型下，其触发规则改为 回复内容包含关键词即触发</li>
</ul>
</li>
<li>
<p>2023-10-29</p>
<ul>
<li>删除部分Live2D模型</li>
</ul>
</li>
<li>
<p>2023-10-28</p>
<ul>
<li>优化webui文本错误部分及UI排版</li>
</ul>
</li>
<li>
<p>2023-10-27</p>
<ul>
<li>支持智谱新模型32k</li>
<li>webui补充虚拟身体配置项</li>
<li>删减部分违禁词</li>
</ul>
</li>
<li>
<p>2023-10-26</p>
<ul>
<li>新增虚拟身体配置页面</li>
<li>修改webui图标和标题，拉出关键传参</li>
<li>webui新增开关灯功能</li>
</ul>
</li>
<li>
<p>2023-10-25</p>
<ul>
<li>webui删除遗漏的登录页按钮</li>
</ul>
</li>
<li>
<p>2023-10-24</p>
<ul>
<li>修复b站监听方案2的用户名获取失败bug</li>
<li>webui增加登录页；美化UI</li>
<li>补充遗漏的webui登录配置</li>
<li>webui新增登录页使能，咱本地使用不需要登录！</li>
</ul>
</li>
<li>
<p>2023-10-22</p>
<ul>
<li>修复斗鱼监听失败bug</li>
<li>b站登录新增2种登录方式</li>
<li>新增哔哩哔哩监听方案2（后期实测稳定性）</li>
</ul>
</li>
<li>
<p>2023-10-21</p>
<ul>
<li>接入 twitch</li>
</ul>
</li>
<li>
<p>2023-10-20</p>
<ul>
<li>修复本地问答音频库触发后，会合成多余内容的bug</li>
<li>提高httpx日志等级</li>
<li>接入 YouTube</li>
<li>修复webui，语音合成配置不生效bug</li>
</ul>
</li>
<li>
<p>2023-10-18</p>
<ul>
<li>webui新增部分聊天页配置功能</li>
<li>修改watchfiles日志等级</li>
<li>webui增加聊天输入框及发送按钮</li>
<li>修复webui运行都是b站的问题</li>
<li>优化webui的UI样式</li>
</ul>
</li>
<li>
<p>2023-10-17</p>
<ul>
<li>webui补充积分页配置功能（修复部分bug）</li>
</ul>
</li>
<li>
<p>2023-10-15</p>
<ul>
<li>智谱AI新增无用内容删除，让回复更加正常点，不用把相关描述也输出</li>
<li>提供多按键映射的配置实例；修复多按键映射bug</li>
<li>GUI增加按键映射配置板块；修改相似度配置项为字符串类型</li>
<li>webui新增文案页部分配置功能</li>
</ul>
</li>
<li>
<p>2023-10-14</p>
<ul>
<li>webui补全通用配置页；修复配置上的部分bug</li>
</ul>
</li>
<li>
<p>2023-10-13</p>
<ul>
<li>修复平台配置bug</li>
<li>新增音频随机变速、Live2D、定时任务的配置项</li>
</ul>
</li>
<li>
<p>2023-10-12</p>
<ul>
<li>补充遗漏的nicegui依赖</li>
<li>修改按键映射的函数调用为按下释放，配置结构调整为单个按键多行配置的形式</li>
</ul>
</li>
<li>
<p>2023-10-11</p>
<ul>
<li>新增虚拟身体部分 对接xuniren项目</li>
</ul>
</li>
<li>
<p>2023-10-10</p>
<ul>
<li>补充遗漏的pyautogui库</li>
<li>按键映射增加日志输出</li>
<li>webui新增答谢、按键映射板块的配置功能</li>
</ul>
</li>
<li>
<p>2023-10-09</p>
<ul>
<li>新增按键映射配置，执行晚于其他3个模式（GUI未适配）</li>
<li>按键映射功能，新增配置项-起始命令（GUI未适配）</li>
<li>修复文案音频合成bug补充genshinvoice的兼容（不确保没新bug）</li>
</ul>
</li>
<li>
<p>2023-10-07</p>
<ul>
<li>智谱AI新增CharacterGLM模型</li>
</ul>
</li>
<li>
<p>2023-10-06</p>
<ul>
<li>webui开发进行中...进度预估30%</li>
</ul>
</li>
<li>
<p>2023-10-01</p>
<ul>
<li>音频部分相关的优化（音频输出路径自定义等）</li>
</ul>
</li>
<li>
<p>2023-09-26</p>
<ul>
<li>修复通义千问必须配置文件的bug</li>
</ul>
</li>
<li>
<p>2023-09-23</p>
<ul>
<li>新增积分页的GUI实现，并且优化了UI部分动态加载数据的源码</li>
<li>新增 通义千问 的接入</li>
<li>GUI的下拉选择框支持编辑，可以填入关键词进行直接的搜索</li>
</ul>
</li>
<li>
<p>2023-09-22</p>
<ul>
<li>新增积分页，积分页暂时只完成了签到板块的显示功能</li>
<li>完成积分机制目前所有后端功能</li>
</ul>
</li>
<li>
<p>2023-09-21</p>
<ul>
<li>弹幕处理新增全标点符号的弹幕过滤 </li>
<li>追加几个本地问答，让ai有所b数；更新投资人信息 </li>
<li>更新违禁词库</li>
</ul>
</li>
<li>
<p>2023-09-20</p>
<ul>
<li>智谱回复部分如果存在多\情况，则会删除重复的\仅保留一个</li>
</ul>
</li>
<li>
<p>2023-09-19</p>
<ul>
<li>新增游戏demo例程</li>
<li>修改默认配置关闭积分机制</li>
</ul>
</li>
<li>
<p>2023-09-18</p>
<ul>
<li>积分机制 新增礼物和入场积分记录的实现，GUI未适配；默认配置修改。</li>
<li>积分机制 新增查询功能，用户可以查询积分情况，GUI未适配；</li>
</ul>
</li>
<li>
<p>2023-09-17</p>
<ul>
<li>后移web字幕打印机调用的位置，让其可以对其音频合成部分</li>
</ul>
</li>
<li>
<p>2023-09-16</p>
<ul>
<li>录音页 新增录音按键` 数字1左边按键</li>
</ul>
</li>
<li>
<p>2023-09-16</p>
<ul>
<li>新增积分表，暂时只做了b站的签到部分功能，GUI未适配</li>
</ul>
</li>
<li>
<p>2023-09-14</p>
<ul>
<li>更新requirements_common.txt，解决aiohttp等版本冲突问题 —— vantang</li>
</ul>
</li>
<li>
<p>2023-09-13</p>
<ul>
<li>GUI缩短配置项长度，给右侧预留10%的空间，方便鼠标在此处停留使用滚轮功能。</li>
<li>更新切分算法，没有最长字符的强制切分，读句子会丝滑，但是千万要断句啊，怕你电脑吃不消</li>
</ul>
</li>
<li>
<p>2023-09-12</p>
<ul>
<li>vits-fast新增配置项 语言，可以固定合成语言或自动识别</li>
<li>新增文心一言web版API接入</li>
</ul>
</li>
<li>
<p>2023-09-11</p>
<ul>
<li>删除聊天页ctrl+c或z的程序退出功能</li>
</ul>
</li>
<li>
<p>2023-09-10</p>
<ul>
<li>新增 念弹幕功能，可以对直播间弹幕进行复读，更有针对性，试用助理场景（另外发现b站的用户名被加密了）</li>
<li>修复GUI内置文档超链接过期问题</li>
</ul>
</li>
<li>
<p>2023-09-09</p>
<ul>
<li>文档独立到单独仓库，在线访问。</li>
<li>聊天页 文本输入框支持回车按键触发发送。</li>
</ul>
</li>
<li>
<p>2023-09-08</p>
<ul>
<li>VITS下，兼容bert-vits2</li>
</ul>
</li>
<li>
<p>2023-09-05</p>
<ul>
<li>修复后置回复没法关闭 念用户名 的bug</li>
<li>删除部分无关紧要的违禁词</li>
<li>本地问答文本库 新增动态变量{username}，用于替换用户名</li>
</ul>
</li>
<li>
<p>2023-09-03</p>
<ul>
<li>新增 谷歌bard的接入，支持上下文记忆。</li>
<li>b站板块可以选择不登录（部分用户不登录也可以正常使用）</li>
</ul>
</li>
<li>
<p>2023-09-02</p>
<ul>
<li>补充、删减部分违禁词</li>
<li>补充遗漏的zhipuai库</li>
<li>入场和礼物感谢部分删除用户名中存在的特殊符号</li>
<li>抖音关注事件可以触发关注感谢话术</li>
<li>基本实现动态文案功能，待后续使用体验中完善</li>
<li>更新b站监听库到16.0.0版本，新增b站登录板块，获取cookie等信息解决弹幕监听丢失问题（强烈建议使用小号登录，有风险）</li>
<li>修复GUI b站部分配置项描述错误</li>
</ul>
</li>
<li>
<p>2023-09-01</p>
<ul>
<li>新增 智谱AI的接入，支持上下文记忆。</li>
<li>修复智谱AI返回内容有\n时，也会进行语音合成的bug</li>
<li>删除部分违禁词</li>
<li>念用户名时，删除用户名中存在的特殊符号</li>
<li>顶部菜单栏新增Q群跳转，改名 帮助  </li>
</ul>
</li>
<li>
<p>2023-06-13</p>
<ul>
<li>兼容本地版ChatGLM API接口  </li>
</ul>
</li>
<li>
<p>2023-06-16</p>
<ul>
<li>增加Edge-TTS的语速、音量调节参数。  </li>
</ul>
</li>
<li>
<p>2023-06-17</p>
<ul>
<li>增加GUI版。</li>
<li>增加GUI运行的bat文件，需要配合本地虚拟环境运行。请到releases下载。</li>
<li>对config.json的结构做了调整，增加了弹幕前后缀过滤配置。</li>
<li>增加langchain_pdf_local的配置内容，待和主线整合后合并。</li>
</ul>
</li>
<li>
<p>2023-06-18</p>
<ul>
<li>修复部分GUI的bug</li>
<li>整合到主线</li>
<li>新增本地live2d模型加载</li>
</ul>
</li>
<li>
<p>2023-06-20</p>
<ul>
<li>补充了整合包的打包方式</li>
<li>音频合成更改多线程为队列结构，解决高并发的崩溃问题</li>
<li>langchain_pdf_local 增加 <a href="https://huggingface.co/GanymedeNil/text2vec-large-chinese">GanymedeNil/text2vec-large-chinese</a> 模型，该模型在中文解析上很好</li>
<li>增加弹幕触发,回复部分日志记录时，每20字符自动换行的机制</li>
<li>修改edge-tts合成音频的文件名范围</li>
<li>更换抖音方案为<code>dy-barrage-grab</code>  </li>
<li>GUI新增 弹幕日志类型、修改langchain_pdf_local的模型下拉选择</li>
</ul>
</li>
<li>
<p>2023-06-21</p>
<ul>
<li>修复语音合成内容错误的bug</li>
</ul>
</li>
<li>
<p>2023-06-23</p>
<ul>
<li>针对整合包问题进行了优化和处理，新增了Scripts文件夹用于存储制作整合包时需要用的相关脚本。  </li>
<li>新增本地回答库，启用后优先匹配库内问答，无匹配结果则按正常流程运行</li>
<li>新增stable diffusion的接入。（UI还未适配，初步实现功能，搭配虚拟摄像头食用）</li>
</ul>
</li>
<li>
<p>2023-06-24</p>
<ul>
<li>新增stable diffusion的接入。（UI还未适配，初步实现功能，搭配虚拟摄像头食用）</li>
<li>bug修复：vits配置项依赖问题</li>
<li>补充遗漏的ui文件</li>
<li>GUI补充缺失的vits的speed</li>
<li>GUI增加SD的配置</li>
<li>GUI修改Edge-TTS的说话人配置为下拉菜单，数据文件在data下，可以自行编辑修改</li>
</ul>
</li>
<li>
<p>2023-06-25</p>
<ul>
<li>修复保存配置时，edge-tts配置报错错误导致程序无法正常工作的bug</li>
</ul>
</li>
<li>
<p>2023-06-28</p>
<ul>
<li>将langchain_pdf和langchain_pdf_local两个模式统一为chat_with_file模式</li>
</ul>
</li>
<li>
<p>2023-06-29</p>
<ul>
<li>合并dev和main，并同步兼容GUI。</li>
<li>修复GPT_MODEL初始化claude时的空配置bug</li>
<li>bilibili-api-python需要升级至15.5.1，更加稳定</li>
<li>GUI改langchain为chat_with_file</li>
<li>正式合入主线</li>
</ul>
</li>
<li>
<p>2023-07-01</p>
<ul>
<li>修改chat_mode的gpt为chatgpt，适配调整。</li>
<li>MD增加目录</li>
<li>追加对text-generation-webui的兼容。</li>
<li>修复chat_with_file，openai相关模式下的无法使用的bug。</li>
<li>补充缺失的faiss-cpu依赖。</li>
<li>后置create_faiss_index_from_zip的加载。</li>
<li>语音合成逻辑升级，会先对中文长文本进行切分，然后多线程队列合成，从而可以通过多次合成的方式处理长回复。</li>
<li>修改默认音频合成长度为80 &amp; 200。</li>
<li>GUI部分固定配置项改为下拉框形式，简化配置难度。</li>
<li>GUI chat_with_file部分对chatgpt/claude的配置依赖，改选中直接呼出3个配置box。</li>
<li>修复音频分割部分对短音频丢失问题的恶性bug。</li>
</ul>
</li>
<li>
<p>2023-07-02</p>
<ul>
<li>chat_with_file模式支持加载本地模型，无需链接huggingface仓库</li>
<li>延长audio合成部分，合成队列的循环延时，一定程度上降低对Edge-TTS的压力。</li>
<li>给audio合成中 vits没有启动时的数据解析追加try异常捕获。</li>
<li>修复 回复文本切分时，对空字符串的过滤遗漏，并对.的过滤进行删除，默认中文环境的过滤</li>
<li>音频合成部分基本上都进行了异常捕获。</li>
<li>新增功能 点歌模式 触发优先级高于LLM和弹幕过滤机制，可以通过 自定义点歌和取消点歌命令 播放本机已有音频。</li>
</ul>
</li>
<li>
<p>2023-07-03</p>
<ul>
<li>新增so-vits-svc的接入，可以对edge-tts/vits-fast合成后的音频进行变声后在输出。</li>
<li>优化链接过滤的实现，提升准确性。</li>
</ul>
</li>
<li>
<p>2023-07-04</p>
<ul>
<li>优化说明文档，以更利于用户通过文档解决相关问题、获得帮助。</li>
<li>微调了语音合成前的文本切分算法，会控制在10-30字，结合合成时间大概可能也许可以达到不错的连续性。</li>
</ul>
</li>
<li>
<p>2023-07-05</p>
<ul>
<li>点歌模式 支持子文件夹的音频文件搜索，不用拘泥于一级目录了。</li>
<li>修复source_data因为路径已存在而没有定义的bug。</li>
<li>音频合成输出日志，方便用户了解音频合成情况。</li>
<li>修复点歌完成后，还进行LLM对话的bug。</li>
<li>修复chat_with_file openai_gpt模式，数据切分丢失数据的恶性bug。</li>
</ul>
</li>
<li>
<p>2023-07-08</p>
<ul>
<li>新增 文案模式，基本完成功能。可以自定义文案、合成音频、配置相关信息、循环暂停播放文案。</li>
<li>修复 文案模式 合成音频失败的bug</li>
<li>修复 文案模式 没有运行就可以进行合成、播放、暂停操作的bug</li>
<li>优化 文案模式 音频播放部分的实现逻辑。新增加载文案不存在就创建的机制。追加了文案页的各个配置和相关说明。</li>
<li>修复 audio子线程sleep阻塞主线程弹幕监听的问题。</li>
<li>修复 文案音频暂停后 会被弹幕重新激活的bug。</li>
<li>优化 文案模式 GUI相关交互</li>
</ul>
</li>
<li>
<p>2023-07-09</p>
<ul>
<li>新增 聊天模式-谷歌。可以本地直接与LLM进行语音聊天。（依赖魔法）</li>
<li>新增 SD模型下 LLM对提示词优化的功能。GUI同步适配。</li>
</ul>
</li>
<li>
<p>2023-07-10</p>
<ul>
<li>GUI可以检索Live2D路径下的模型进行动态修改配置。（需要注意，修改后浏览器缓存问题，请用无痕浏览器打开）</li>
<li>追加 Live2D官网所有的免费模型</li>
<li>新增 答谢功能（入场欢迎、礼物答谢），暂时只支持B站，GUI同步进行配置。</li>
</ul>
</li>
<li>
<p>2023-07-11</p>
<ul>
<li>优化文本切分算法</li>
</ul>
</li>
<li>
<p>2023-07-12</p>
<ul>
<li>增加项目的思维导图</li>
<li>增加项目的简易流程图</li>
</ul>
</li>
<li>
<p>2023-07-13</p>
<ul>
<li>聊天页新增聊天框，在运行后可以直接使用聊天框进行聊天</li>
<li>修改audio、sd、claude中所有的time.sleep为异步睡眠</li>
</ul>
</li>
<li>
<p>2023-07-14</p>
<ul>
<li>新增TTS模式 genshinvoice_top,调用第三方接口完成语音合成</li>
</ul>
</li>
<li>
<p>2023-07-15</p>
<ul>
<li>修改 聊天模式-谷歌 为 聊天模式，新增语音识别 百度接口。</li>
<li>追加线程进程退出处理（部分有效）</li>
<li>聊天模式 按键触发兼容英文大小写字母。</li>
<li>聊天模式 支持循环录音功能，新增停止触发按键。</li>
</ul>
</li>
<li>
<p>2023-07-16</p>
<ul>
<li>优化cluade协程处理方式</li>
<li>chat_with_file的openai_gpt同样使用提示词模板来自定义回答方式</li>
<li>新增字幕日志，只会输出即将播放的音频文本，用于直播时的字幕显示。</li>
<li>音频合成的消息队列改成阻塞队列</li>
</ul>
</li>
<li>
<p>2023-07-17</p>
<ul>
<li>抖音版增加入场欢迎和礼物答谢（礼物答谢的金额需要手动维护价格表）</li>
<li>新增 同拼音的违禁拼音过滤机制</li>
<li>GUI适配字幕日志的配置</li>
</ul>
</li>
<li>
<p>2023-07-18</p>
<ul>
<li>新增抖音礼物价格数据，礼物价值下限将生效（数据不全，可以自行补充）</li>
<li>优化抖音日志信息，只输出info信息，不在输出debug日志，更加清爽。</li>
<li>接入DDSP-SVC，简单测试了下，效果好像不太对。优化了变声部分的代码</li>
</ul>
</li>
<li>
<p>2023-07-19</p>
<ul>
<li>GUI适配DDSP-SVC；补充说明文档</li>
<li>优化audio中vits接口的设计&amp;优化代码减少冗余</li>
<li>新增本地问答音频库，机制类似点歌，通过编辑音频文件名做为触发匹配关键词，优先级第二高，匹配命中后直接会进行匹配音频的播放。</li>
<li>新增自定义上下限音频随机变速，对普通音频播放和文案音频播放可以进行随机变速配置。(GUI未适配)</li>
</ul>
</li>
<li>
<p>2023-07-20</p>
<ul>
<li>增加ffmpeg缺失的解决方案</li>
<li>文案模式增加了一组文案配置，也就是说有2块文案，会进行左右切换的播放，都播放完毕后会进行新的一轮播放。</li>
<li>新增LLM后的第二重过滤（违禁词、链接、拼音）</li>
<li>违禁拼音配置内容需要是中文，需要注意，已更正</li>
<li>新增 念用户名的功能，例：回复xxx。你好</li>
<li>新增用户名过滤（违禁词、链接、拼音）</li>
<li>修复本地问答音频匹配，传入音频后缀导致的匹配错误bug</li>
<li>新增本地问答库匹配 最低相似度配置，用于微调需要的关键词匹配度，已自定义触发灵敏度。</li>
<li>音频随机变速 GUI适配</li>
</ul>
</li>
<li>
<p>2023-07-21</p>
<ul>
<li>修复edge-tts + so-vits-svc协同下，相对路径无法变声的bug</li>
<li>针对部分用户绝对路径音频加载仍有系统找不到指定文件的情况，恢复相对路径，只在变声条件下转绝对路径</li>
<li>音频变速部分改默认变速变调为默认变速不变调且函数兼容变速变调</li>
</ul>
</li>
<li>
<p>2023-07-22</p>
<ul>
<li>修复音频播放部分，音频变速调用缺失缩进导致变速必定执行的bug</li>
</ul>
</li>
<li>
<p>2023-07-23</p>
<ul>
<li>修复音频播放部分，音频变速语速低于1时变速合成的音频不正常的bug</li>
<li>改变弹幕处理逻辑，先由process_data预处理函数进行指定时间内的数据丢弃后，再进行数据处理，可以有效降低高并发造成的一系列问题</li>
<li>dy_old改为接入第三方大佬提供的免费不可商用ws监听</li>
<li>本地问答库支持自定义变量的形式来开发动态语句</li>
<li>本地问答库-文本 修改完全匹配为相似度匹配，暂时和音频匹配共用一个相似度值</li>
<li>文本切分算法，可以通过max_limit_len来对强制切分做自定义，对显卡性能高的用户而言，可以通过增大限制来提高语句流畅度。</li>
</ul>
</li>
<li>
<p>2023-07-24</p>
<ul>
<li>文案模式，文案格式修改，可以无限拓展文案路径数量来达到多类型文案切换的效果，GUI带适配动态加载。</li>
</ul>
</li>
<li>
<p>2023-07-25</p>
<ul>
<li>新增 不启用 聊天类型，修改none为不启用，reread为复读机。关闭聊天（LLM等）,既可以应用于直播助理等场景，只负责欢迎和感谢。</li>
<li>接入科大讯飞 星火</li>
</ul>
</li>
<li>
<p>2023-07-26</p>
<ul>
<li>补充遗漏的星火依赖</li>
<li>修复text-Gen max_new_tokens保存失败bug</li>
<li>文案页，音频文件格式支持大写的MP3和WAV</li>
<li>文案页 支持配置连续播放音频条件（超时切换&amp;数量上限）</li>
<li>文案页 文案切换播放逻辑变更，某一文案列表播放放完会重载列表内容，不再等待其他列表均播放完毕后才能重载</li>
</ul>
</li>
<li>
<p>2023-07-27</p>
<ul>
<li>ChatGLM支持上下文，默认启动（GUI未适配）</li>
<li>抖音版增加 定时播报任务功能，用户可以自定义是否启用，循环时间和定时任务文案（变量可自行修改源码追加功能）</li>
</ul>
</li>
<li>
<p>2023-07-29</p>
<ul>
<li>修复elevenlabs配置同新版不匹配导致无法使用的bug</li>
<li>新增bark-gui的接入</li>
<li>修复ChatGLM上下文记忆bug，并新增GUI相关配置，可以启用和设置最大记忆字符长度</li>
<li>数据丢弃机制补全GUI配置</li>
</ul>
</li>
<li>
<p>2023-07-30</p>
<ul>
<li>修复点歌搜索失败bug</li>
<li>修改默认的切分算法的最大长度为40字</li>
</ul>
</li>
<li>
<p>2023-07-31</p>
<ul>
<li>入场&amp;礼物处理追加用户名违禁词过滤</li>
<li>回复用户名支持选择变声开关&amp;自定义前回复、后回复的文案，且支持多文案随机抽取(GUI未匹配)</li>
</ul>
</li>
<li>
<p>2023-08-01</p>
<ul>
<li>本地问答库升级，支持选择2种匹配算法。旧版本 一问一答，新版本 自定义json（更具灵活性）。文本和音频的相似度也分离了。</li>
<li>回复用户名板块 GUI适配，顺便优化了GUI部分对多行文本处理的源码实现</li>
</ul>
</li>
<li>
<p>2023-08-02</p>
<ul>
<li>定时任务GUI支持动态加载</li>
<li>b站接入定时任务</li>
</ul>
</li>
<li>
<p>2023-08-03</p>
<ul>
<li>定时任务 报时任务补充分钟的播报</li>
<li>修复定时任务同时存在多个变量时，无法正常运行的bug</li>
</ul>
</li>
<li>
<p>2023-08-04</p>
<ul>
<li>更换快手监听方案，新方案是playwright的形式，建议使用小号，每次用完需要删除cookie下的json文件，因为第二次就异常了，没法正常捕获。暂时只支持弹幕回复。</li>
<li>快手 追加礼物Id和连击数日志，礼物价格和礼物名有待后期维护礼物表；补充默认cookie文件夹</li>
<li>快手 补充定时任务（暂只支持 报时任务）</li>
<li>闻达接入。ChatGPT改为ChatGPT/闻达，配合闻达启动器可以融入openai接口使用。</li>
</ul>
</li>
<li>
<p>2023-08-05</p>
<ul>
<li>聊天页 支持直接合成复读内容，适用于直播中有人值守时直接进行交流。</li>
<li>点歌模式支持新功能-随机点歌，命令在配置文件/GUI中可以自定义</li>
<li>GUI新增 自定义板块显隐，用户可以根据自己喜好配置显示的box板块，让配置页面不再臃肿</li>
<li>文案页，文案配置改为动态加载，即可以支持无限制的多套文案。</li>
<li>修复文案和聊天同时使用时，音频播放会一次性播放2个的bug；b站重复调用的部分也做了删除。</li>
<li>文案页 新增文案编号配置项和增删按钮，用于对文案配置进行动态的增删操作。</li>
</ul>
</li>
<li>
<p>2023-08-07</p>
<ul>
<li>VITS全面改为VITS-Fast，新增VITS（原版，配合vits-simple-api使用），此更新变动较大，可能存在隐患，需要注意</li>
<li>优化audio部分代码，tts部分源码全部拆到<code>utils\audio_handle\my_tts.py</code>中</li>
<li>修复VITS配置保存后错乱的bug</li>
</ul>
</li>
<li>
<p>2023-08-08</p>
<ul>
<li>修复违禁拼音在拼音部分包含违禁拼音的情况下也被过滤的bug</li>
</ul>
</li>
<li>
<p>2023-08-09</p>
<ul>
<li>修复本地违禁词库不配置时无法正常工作的bug</li>
<li>修复so-vits-svc+ddsp套娃变声失败的bug</li>
<li>修复音频变声bug</li>
<li>新增langchain_chatglm的接入</li>
</ul>
</li>
<li>
<p>2023-08-10</p>
<ul>
<li>vits修改语言配置为下拉框，改默认为自动，修复bug</li>
</ul>
</li>
<li>
<p>2023-08-11</p>
<ul>
<li>过滤板块 新增遗忘保留数的配置项，从默认的1个数改为可以根据自定义配置保留，在定时触发后依次响应。</li>
</ul>
</li>
<li>
<p>2023-08-12</p>
<ul>
<li>新增 斗鱼平台的接入（初步接入，仅有弹幕数据的监听）</li>
<li>修改commit为comment（大改动，单词拼错了，现在才发现，难绷）</li>
<li>新增弹幕、入场、礼物的数据库日志记录(GUI未适配)</li>
</ul>
</li>
<li>
<p>2023-08-14</p>
<ul>
<li>新增Claude2的接入</li>
</ul>
</li>
<li>
<p>2023-08-15</p>
<ul>
<li>弹幕、入场、礼物的数据库日志记录GUI适配</li>
</ul>
</li>
<li>
<p>2023-08-16</p>
<ul>
<li>增加基于docsify的文档</li>
<li>美化logo</li>
<li>简单的初步美化下GUI</li>
</ul>
</li>
<li>
<p>2023-08-18</p>
<ul>
<li>后置部分GPT_MODEL配置，规避一次性全加载问题</li>
<li>修复 LLM部分GUI板块显隐bug</li>
<li>讯飞星火库需要升级才能恢复兼容（已更新依赖）</li>
<li>修复部分GUI显示bug</li>
<li>恢复Claude2的兼容</li>
</ul>
</li>
<li>
<p>2023-08-19</p>
<ul>
<li>新增 音频播放板块，暂时只提供音频播放的开关。</li>
<li>GUI优化按钮无边框问题；关于新增 在线文档 跳转入口</li>
</ul>
</li>
<li>
<p>2023-08-20</p>
<ul>
<li>新增 动态文案 版本GUI部分的实现（功能还未实现）</li>
</ul>
</li>
<li>
<p>2023-08-23</p>
<ul>
<li>近期发现有第三方直接套娃售卖项目，可怜的娃呀，收手吧。另外，套娃的，不分钱给我，我觉得这不合适吧（</li>
</ul>
</li>
<li>
<p>2023-08-24</p>
<ul>
<li>audio合成 音频合成部分新增合成内容的日志，方便后期合成音频时的bug定位</li>
</ul>
</li>
<li>
<p>2023-08-27</p>
<ul>
<li>新增web字幕打印机的接入</li>
</ul>
</li>
<li>
<p>2023-08-29</p>
<ul>
<li>TTS新增VALL-E-X的接入</li>
</ul>
</li>
</ul>
</details>
<h2 id="star">⭐️Star 经历</h2>
<p><a href="https://star-history.com/#Ikaros-521/AI-Vtuber&amp;Date"><img alt="image" src="//api.star-history.com/svg?repos=Ikaros-521/AI-Vtuber&amp;type=Date" /></a></p>
<h2 id="_76">🤝贡献</h2>
<h3 id="_77">🎉鸣谢</h3>
<p>感谢以下开发者对该项目做出的贡献：</p>
<p><a href="//github.com/Ikaros-521/AI-Vtuber/graphs/contributors">
  <img src="//contrib.rocks/image?repo=Ikaros-521/AI-Vtuber" />
</a></p>
<h3 id="_78">💸投资方</h3>
<p><img alt="image" src="static/images/luna-ai/invest.png" /></p>
<h3 id="_79">合作伙伴</h3>
<p>青椒云：<a href="//account.qingjiaocloud.com/signin?inviteCode=4Q92ROBQ">qingjiaocloud.com</a> <code>AIGC 高性能云桌面</code>  </p>
<p>睿声AI：<a href="//www.reecho.ai/">reecho.ai</a> <code>瞬时创建 超级拟真的 人工智能克隆语音</code>  </p>
<h3 id="_80">🙌赞助</h3>
<p><img alt="image" src="static/images/luna-ai/alipay.png" width="200" />
<img alt="image" src="static/images/luna-ai/wechatpay.png" width="200" /></p>


  


  



                
              </article>
            </div>
          
          
  <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>

        </div>
        
      </main>
      
        <footer class="md-footer">
  
  <div class="md-footer-meta md-typeset">
    <div class="md-footer-meta__inner md-grid">
      <div class="md-copyright">
  
    <div class="md-copyright__highlight">
      Copyright &copy; 2023 <a href="//ie.cx">𝑖𝑞𝑏𝑜𝑜𝑠𝑡</a> & Ikaros-521
    </div>
  
  
</div>
      
    </div>
  </div>
</footer>
      
    </div>
    <div class="md-dialog" data-md-component="dialog">
      <div class="md-dialog__inner md-typeset"></div>
    </div>
    
    <script id="__config" type="application/json">{"base": ".", "features": ["navigation.instant", "content.tabs.link"], "search": "assets/javascripts/workers/search.dfff1995.min.js", "translations": {"clipboard.copied": "\u5df2\u590d\u5236", "clipboard.copy": "\u590d\u5236", "search.result.more.one": "\u5728\u8be5\u9875\u4e0a\u8fd8\u6709 1 \u4e2a\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.more.other": "\u5728\u8be5\u9875\u4e0a\u8fd8\u6709 # \u4e2a\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.none": "\u6ca1\u6709\u627e\u5230\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.one": "\u627e\u5230 1 \u4e2a\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.other": "# \u4e2a\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.placeholder": "\u952e\u5165\u4ee5\u5f00\u59cb\u641c\u7d22", "search.result.term.missing": "\u7f3a\u5c11", "select.version": "\u9009\u62e9\u5f53\u524d\u7248\u672c"}}</script>
    
    
      <script src="assets/javascripts/bundle.dff1b7c8.min.js"></script>
      
    
  </body>
</html>